Лишние данные в начале заголовка R - PullRequest
1 голос
/ 09 августа 2010

Я использую следующий скрипт для чтения в .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 ]

7 голосов
/ 09 августа 2010

Проблема не в вашем заголовке - это # ​​в последнем поле. Это рассматривается как символ комментария. Если вы установите comment.char = "" или что-то эквивалентное, это будет работать. Я скопировал ваши данные в файл с именем testdata.txt

read.table("testdata.txt", sep = ";", header=T, comment.char="")

Это сработало.

Ошибка «строка 1 не имела 16 элементов» означает, что заголовок имел 16 элементов (он читал всю точку до последней точки с запятой), тогда как в первой строке было только 15 (конечная точка с запятой закомментирована). 1006 *

0 голосов
/ 09 августа 2010

Откройте ваш файл данных в текстовом редакторе.

Убедитесь, что у вас действительно есть 21 элемент в строке заголовка.

У вас есть случайные начальные (или конечные) пробелы (или символ-разделитель)?

У вас есть правильный разделитель (sep =) в read.table?

Если у вас есть имена полей, которые нужно экранировать, это было сделано? например В файле, разделенном запятыми, имя поля one, two должно быть записано "one, two".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...