我正在使用以下脚本将.txt文件读入R中。出于某种原因,即使我在标题中只有21个元素,它声称我有22个。这使得读取表函数出错,因为其余的该文件的行只有21项。
当我使用扫描功能时,我注意到我的标题实际上是从元素2开始,而元素1是空的,就像这样。 “”
在我看来,问题是某些东西正在被读入第一个元素,而不应该。我不明白这一点,因为第一行是一个前面没有空格的字符串。
library(foreign)
setwd("/Library/A_Intel/")
filelist <-list.files()
#assuming tab separated values with a header
datalist = lapply(filelist, function(xx)read.table(xx, header=T, sep=";"))
#assuming the same header/columns for all files
datafr = do.call("rbind", datalist)
谢谢!
编辑1
TIME ;POWER SOURCE ;qty MONITORS ;NUM PROCESSORS ;freq of CPU Mhz ;SCREEN SIZE ;CPU LOAD ;BATTERY LEVEL ; KEYBOARD MVT ; MOUSE MVT ;BATTERY MWH ;HARD DISK SPACE ;NUMBER PROCESSES ;RAM ;FOCUS APP ;
2010-08-09-14:57:29.423 ; AC ; 1 ; 2 ; 1600 ; 1280 : 800 ; 0.434570 ; 100 ; NO ; NO ; 38119596 ; 66.388687 ; 65 ; 1446.54296875 ; Xcode-#6294 ;
2010-08-09-14:57:30.422 ; AC ; 1 ; 2 ; 1600 ; 1280 : 800 ; 0.399414 ; 100 ; NO ; NO ; 38119596 ; 66.388687 ; 65 ; 1446.55859375 ; Xcode-#6294 ;
2010-08-09-14:57:31.421 ; AC ; 1 ; 2 ; 1600 ; 1280 : 800 ; 0.399414 ; 100 ; NO ; YES ; 38119596 ; 66.388687 ; 65 ; 1446.9375 ; Xcode-#6294 ;
2010-08-09-14:57:32.421 ; AC ; 1 ; 2 ; 1600 ; 1280 : 800 ; 0.399414 ; 100 ; NO ; YES ; 38119596 ; 66.388687 ; 65 ; 1446.875 ; Xcode-#6294 ;
2010-08-09-14:57:33.421 ; AC ; 1 ; 2 ; 1600 ; 1280 : 800 ; 0.399414 ; 100 ; NO ; YES ; 38119596 ; 66.388695 ; 65 ; 1445.7890625 ; Xcode-#6294 ;
2010-08-09-14:57:34.421 ; AC ; 1 ; 2 ; 1600 ; 1280 : 800 ; 0.399414 ; 100 ; NO ; YES ; 38119596 ; 66.388695 ; 65 ; 1444.84765625 ; Xcode-#6294 ;
我一直在玩一个文件,但我仍然遇到同样的问题。我注意到,当你标记'header =“TRUE”时,标题需要一列少然后是数据。我认为这有助于第一列被认为是索引,而是数据框在第一个类别中标记,即行中的最后一个值没有列名。
再次感谢!
编辑2
这是一个典型的错误:
Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, :
line 1 did not have 16 elements
答案 0 :(得分:7)
问题不在于您的标题 - 它是最后一个字段中的#。它被视为评论角色。如果您设置comment.char =“”或等效的东西,它将起作用。我将您的数据复制到名为testdata.txt
的文件中read.table("testdata.txt", sep = ";", header=T, comment.char="")
这很有用。
错误“第1行没有16个元素”意味着标题有16个元素(它一直读到最后一个分号),而第一行只有15个(终端分号被注释掉)。 / p>
答案 1 :(得分:0)
在文本编辑器中打开您的数据文件。
检查标题行中是否确实有21个元素。
您是否有偶然的前导(或尾随)空格(或分隔符)?
您是否在sep =
中找到了正确的分隔符(read.table
)?
如果您有需要转义的字段名称,那已经完成了吗?例如在以逗号分隔的文件中,需要将one, two
字段名称写为"one, two"
。