R标头开头的多余数据

时间:2010-08-09 11:59:08

标签: r visualization

我正在使用以下脚本将.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

2 个答案:

答案 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"