在 R 中导入 FORTRAN 数据的问题
Problems with importing FORTRAN data in R
我有这个 .DAT file 显然来自 FORTRAN。我试过了:
read.fortran("ANDRICH.DAT",header = TRUE, format="8F1.0")
但是没有用。我收到以下错误消息:
Error in read.table(file = FILE, header = header, sep = sep,
row.names = row.names, :
more columns than column names
有什么想法吗?
提前致谢!
数据文件如下所示:
$ 8
$ HIDEOUS
$ LIFESACRED
$ INEFFECTIV
$ DONTBELIEV
$ WISHNOTNEC
$ MUSTHAVEIT
$ DETERRENT
$ CRIMDESERV
$ (8f1.0)
01100000
01100000
01100000
01100000
这是文件的顶部:
$ 8
$ HIDEOUS
$ LIFESACRED
$ INEFFECTIV
$ DONTBELIEV
$ WISHNOTNEC
$ MUSTHAVEIT
$ DETERRENT
$ CRIMDESERV
$ (8f1.0)
01100000
01100000
01100000
01100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
我不知道为什么会是 "FORTRAN-file"。看起来是一个 header 由美元符号分隔的文件,第一个条目是字段数,然后接下来的 N 行是名称,然后是一个固定宽度的文件。
如果您跳过前 10 行,然后使用宽度为 1 的 read.fwf,您应该能够成功。
根据一些谷歌搜索:
"The FORTRAN input format for these data is (8F1.0) where “F1.0” means
that a variable is stored in one column and that there are no implicit
decimals. This format is reiterated without any space 8 times for the
8 variables in the data set."
跳过第一行,直到找到实际数据,并使用文件中指定的格式 8F1.0
:
output <- read.fortran("ANDRICH.DAT", format="8F1.0", skip=10)
您可以使用 readLines
:
获取名称
names(output) <- gsub("\$ ","",readLines("ANDRICH.DAT",n=9)[-1])
结果:
# HIDEOUS LIFESACRED INEFFECTIV DONTBELIEV WISHNOTNEC MUSTHAVEIT DETERRENT CRIMDESERV
#1 0 1 1 0 0 0 0 0
#2 0 1 1 0 0 0 0 0
#3 0 1 1 0 0 0 0 0
#4 0 1 1 0 0 0 0 0
#etc
我有这个 .DAT file 显然来自 FORTRAN。我试过了:
read.fortran("ANDRICH.DAT",header = TRUE, format="8F1.0")
但是没有用。我收到以下错误消息:
Error in read.table(file = FILE, header = header, sep = sep,
row.names = row.names, :
more columns than column names
有什么想法吗? 提前致谢!
数据文件如下所示:
$ 8
$ HIDEOUS
$ LIFESACRED
$ INEFFECTIV
$ DONTBELIEV
$ WISHNOTNEC
$ MUSTHAVEIT
$ DETERRENT
$ CRIMDESERV
$ (8f1.0)
01100000
01100000
01100000
01100000
这是文件的顶部:
$ 8
$ HIDEOUS
$ LIFESACRED
$ INEFFECTIV
$ DONTBELIEV
$ WISHNOTNEC
$ MUSTHAVEIT
$ DETERRENT
$ CRIMDESERV
$ (8f1.0)
01100000
01100000
01100000
01100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
我不知道为什么会是 "FORTRAN-file"。看起来是一个 header 由美元符号分隔的文件,第一个条目是字段数,然后接下来的 N 行是名称,然后是一个固定宽度的文件。
如果您跳过前 10 行,然后使用宽度为 1 的 read.fwf,您应该能够成功。
根据一些谷歌搜索:
"The FORTRAN input format for these data is (8F1.0) where “F1.0” means that a variable is stored in one column and that there are no implicit decimals. This format is reiterated without any space 8 times for the 8 variables in the data set."
跳过第一行,直到找到实际数据,并使用文件中指定的格式 8F1.0
:
output <- read.fortran("ANDRICH.DAT", format="8F1.0", skip=10)
您可以使用 readLines
:
names(output) <- gsub("\$ ","",readLines("ANDRICH.DAT",n=9)[-1])
结果:
# HIDEOUS LIFESACRED INEFFECTIV DONTBELIEV WISHNOTNEC MUSTHAVEIT DETERRENT CRIMDESERV
#1 0 1 1 0 0 0 0 0
#2 0 1 1 0 0 0 0 0
#3 0 1 1 0 0 0 0 0
#4 0 1 1 0 0 0 0 0
#etc