48

我是 R 新手。我正在尝试读取以空格分隔的“CSV”文件。该文件没有标题。看起来像这样

Element1 Element2
Element5 Element6 Element7

我正在尝试这样阅读它:

> mydata <- read.table("/PathTo/file.csv")
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  : 
  line 1 did not have 14 elements

为什么它期望第一行中有 14 个元素?如何导入此文件?

4

2 回答 2

100

read.table想要返回 a data.frame,它必须在每一列中有一个元素。因此,R 期望每一行具有相同数量的元素,并且默认情况下它不会填充空格。尝试read.table("/PathTo/file.csv" , fill = TRUE )填空。

例如

read.table( text= "Element1 Element2
Element5 Element6 Element7" , fill = TRUE , header = FALSE )
#        V1       V2       V3
#1 Element1 Element2         
#2 Element5 Element6 Element7

关于是否设置的注释header = FALSE...read.table尝试自动确定您是否有标题行,因此:

header设置为TRUE当且仅当第一行包含的字段比列数少一个

于 2013-10-18T17:22:34.560 回答
2

要阅读字符,请尝试

scan("/PathTo/file.csv", "")

如果您正在读取数值,则只需使用

scan("/PathTo/file.csv")

scan默认情况下将使用空格作为分隔符。第二个参数的类型定义要读取的“内容”(默认为 double())。

于 2013-10-18T17:10:26.140 回答