2012-08-14 90 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调用中使用一些变体,而不是所有这些额外的瞎搞。