在R中导入FORTRAN数据的问题

时间:2015-02-12 23:57:11

标签: r fortran

我显然是来自FORTRAN的.DAT file。我试过了:

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

2 个答案:

答案 0 :(得分:3)

根据一些谷歌搜索:

  

“这些数据的FORTRAN输入格式为(8F1.0),其中”F1.0“表示   变量存储在一列中,并且没有隐式   小数点。重复此格式,没有任何空间8次   数据集中有8个变量。“

Source

跳过第一行直到您点击实际数据,然后使用文件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

答案 1 :(得分:1)

这是文件的顶部:

$ 8
$ HIDEOUS
$ LIFESACRED
$ INEFFECTIV
$ DONTBELIEV
$ WISHNOTNEC
$ MUSTHAVEIT
$ DETERRENT
$ CRIMDESERV
$ (8f1.0)
01100000
01100000
01100000
01100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000
11100000

我不知道为什么它会成为&#34; FORTRAN文件&#34;。看起来是一个文件,其标题由美元符号分隔,第一个条目为fiels,然后是N行为名称,然后是固定宽度文件。

如果跳过前10行,然后使用宽度= 1的read.fwf,你应该能够获得成功。