在数据结构中存储read.table的输出

时间:2012-05-29 01:17:32

标签: r list data-structures lapply

我尝试过使用向量,数组,列表和集合。当我稍后访问数据时,似乎数据被转换为某种一维结构。例如。

此:

for (i in 1:length(argv)){
    temp= read.csv(file=argv[i], header= TRUE)   
    print( temp )
    input_tables[i]= temp
    print(input_tables[i])

产生这个:

     V1 V2 V3 V4
1  1  5  9 13
2  2  6 10 14
3  3  7 11 15
4  4  8 12 16
[[1]]
[1] 1 2 3 4

  V1 V2 V3 V4
1  2 10 18 26
2  4 12 20 28
3  6 14 22 30
4  8 16 24 32
[[1]]
[1] 2 4 6 8

  V1 V2 V3 V4
1  4 20 36 52
2  8 24 40 56
3 12 28 44 60
4 16 32 48 64
[[1]]
[1]  4  8 12 16

我查看了R的文档(有点谷歌搜索和帮助功能),我无法确定read.table返回什么类型的对象。根据我以前的经验,我认为这是一个数据框或矩阵。

在任何情况下,我如何将这些输出存储在某个结构中而不是投射它?或者至少不丢弃数据。它可能就像现在一样。谢谢你的时间。在我目前的情况下,我有一个解决方法,但似乎这很容易实现。

1 个答案:

答案 0 :(得分:5)

read.csv将返回data.frame(如?read.csvvalue下所述)

两种组合多个文件的方法,假设argv是文件名的向量和 输入将具有相同的数量和列的顺序。

.list <- lapply(argv, read.csv, header = T)
all_data <- do.call(rbind, .list)

或者,使用plyr

library(plyr)
all_data <- ldply(argv, read.csv, header = T)