2012-08-14 77 views
0

我正在嘗試將許多文件讀入R,以將每列中的數據計算到它自己的直方圖中。它似乎工作,直到我嘗試訪問的實際數據R中的Read.table給出了邏輯(0)

的代碼似乎工作在一定程度上(從列名放在一邊。):

test<-sapply(1:Num.Files,function(x){readLines(File.names[x])}) 
    head(test) 
    data<-read.table(header=TRUE,text=test[1]) 
    head(data) 
    names(data)[14]<-'column14' 
    names(data) 
    data$column14 

但這裏是結果:

test < -sapply(1:Num.Files,function(x){readLines(File.names [x])})#輸入數據 head(test)#可以看到信息全部存在 [,1]
[1,]「Targ cov av_cov 87A_cvg 87Ag 87A gr 87Agr 87A_gra 87A%_1 87A%_3 87A%_5 87A%_10 87A%_20 87A%_30 87A%_40 \ t87A%_50 \ t87A%_75 \ t87A%_100「 [2,]」1:028 400 \ t0。 42 \ T400 \ t0.42 \ T1 \ T1 \ T2 \ t41.8 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0「
[3,]」1:296 400 \ t0.42 \ t400 \ t0.42 \ t1 \ t1 \ t2 \ t41.8 \ t0.0 \ t0.0 \ t0.0 \ t0。 0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0「
[4,]」1:453 1646 \ t8.11 \ t1646 \ t8.11 \ t7 \ t8 \ t13 \ t100.0 \ t100.0 \ t87.2 \ t32.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0「
[5,]」1:427 1646 \ t8.11 \ t1646 \ t8.11 \ T7 \ T8 \ T13 \ t100.0 \ t100.0 \ t87.2 \ t32.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0 \ t0.0「
[6,]」1:736 5105 \ t29.68 \ t5105 \ t29.68 \ t14 \ t29 \ t48 \ t100.0 \ t100.0 \ t100.0 \ t86。 0 \ t65.7 \ t49.4 \ t35.5 \ t16.9 \ t0.0 \ t0.0「
data < -read.table(header = TRUE,t ext = test [1]) head(data)#all the correct column names [1] Targ cov av_cov X87A_cvg X87Ag X87Agr X87Agr.1 [8] X87A_gra X87A._1 X87A._3 X87A._5 X87A._10 X87A。 _20 X87A._30 [15] X87A._40 X87A._50 X87A._75 X87A._100 < 0行>(或0長度row.names) 名稱(數據)[14] < -'column14' 名稱(數據)#列14如希望改變 [1]「Targ」「cov」「av_cov」「X87A_cvg」「X87Ag」「X87Agr」
[7]「X87Agr.1」「X87A_gra」「X87A._1」「 X87A._3「」X87A._5「」X87A._10「 [13]」X87A._20「」column14「」X87A._40「」X87A._50「」X87A._75「」X87A._100「 data $ column14 #但在colu中沒有任何東西mn logical(0)

我是不是正確使用read.table?有沒有人有建議?

+0

'head(data)'返回'<0 rows>(或0長度row.names)',這意味着沒有任何列有任何數據。 – 2012-08-14 18:52:31

+0

我想你想'read.table(file = test [1])'而不是'text = test [1]'。 – Justin 2012-08-14 18:53:30

+0

@JoshuaUlrich但頭(測試)有信息。它和數據之間如何丟失<-read.table(header = TRUE,text = test [1])? – Stephopolis 2012-08-14 19:19:18

回答

0

是的,您正在使用read.table,您只傳遞標題行(text[1])。

我會直接在文件名上調用read.table。如果你堅持通過readLines的結果,你可能想重新加入一切,如paste(test, collapse="\n")

+0

要通過所有它,我只是留下文字[]空白? – Stephopolis 2012-08-14 19:22:01

2

爲什麼不只是使用read.table開始而不是readLines業務?請嘗試:

test <- lapply(File.names, read.table, header=TRUE, sep='\t')`. 

此外,您的變量test是行向量。第一行是標題。您僅將第一行test[1]作爲參數傳遞給read.table(text=...)

使用read.table(text=test)應該會更好。但是,您應該在上面寫的lapply調用中使用一些變體,而不是所有這些額外的瞎搞。