在fread或read.table中用单行读入文件到R中

时间:2014-02-24 14:26:44

标签: r data.table fread read.table

我想将一个txt文件读入R

此文件只有文件行,如此

1 NYC 2013-12-30 82 PM2.5 Ⅱ fair 2 London 2013-12-30 66 PM10.0 Ⅱ good

此文件中没有\ n,所有我想要的是包含这些信息的data.table

像这样:

 1 NYC    2013-12-30 82 PM2.5  Ⅱ fair
 2 London 2013-12-30 66 PM10.0 Ⅱ good

幸运的是,文件中没有NA,我也知道每个观察结果都有7个字段。我可以用fread来实现吗?

或read.table?

我试过这个

test <- read.table("1.txt) # the file name..
test <- matrix(test, ncol = 7)

scanas.array。都失败了。

你能提出一些建议吗?

非常感谢!

3 个答案:

答案 0 :(得分:3)

最简单的方法可能是直接使用scan。您也可以使用read.fwf,但我认为这更复杂。

> data.frame(matrix(scan('2.txt', what='character'), nrow=2, byrow=TRUE))
Read 14 items
  X1     X2         X3 X4     X5  X6   X7
1  1    NYC 2013-12-30 82  PM2.5  || fair
2  2 London 2013-12-30 66 PM10.0  || good

答案 1 :(得分:2)

在linux和data.table 1.8.11我会这样做:

fread("sed -r 's/(([^ ]+ +){7})/\\1\\n/g' yourfile | sed 's/ $//'")

答案 2 :(得分:1)

以下是使用scan的第二种方式:

t(do.call(rbind, scan(text=t, what=replicate(7, character()))))
#      [,1] [,2]     [,3]         [,4] [,5]     [,6] [,7]  
# [1,] "1"  "NYC"    "2013-12-30" "82" "PM2.5"  "?"  "fair"
# [2,] "2"  "London" "2013-12-30" "66" "PM10.0" "?"  "good"