将R中具有不同行长度的文件读入List

时间:2014-06-03 20:10:01

标签: r file file-io

我想将一个文件读入一个数组列表,每行代表一个列表元素。每一行都有不同数量的元素和不同行中的第一个值是列表键,其余数据将是数组的成员。

e.g。文件示例

1 100,50,2,5,78
2 5,4,2,1
3 1
4 7,2,9,0,23,5,6,7,8,2,3,4
5 1,2,3,4,5,6,7,8,9,0
6 1,8

1 个答案:

答案 0 :(得分:0)

我认为这应该运作良好

dd<-scan("example.txt", list("character", "character"))
Map(function(a,b)b, dd[[1]], strsplit(dd[[2]],","))

这里使用use scan将第一列作为一个向量读取,将第二列作为另一个向量读取。然后我们用逗号表示第二个,并使用Map的一个副作用从第一列中提取名称,并将它们用作第二列中矢量的标签。如果您希望矢量值为数字,则可以执行

Map(function(a,b) as.numeric(b), dd[[1]], strsplit(dd[[2]],","))

# $`1`
# [1] 100  50   2   5  78
# 
# $`2`
# [1] 5 4 2 1
# 
# $`3`
# [1] 1
# 
# $`4`
#  [1]  7  2  9  0 23  5  6  7  8  2  3  4
# 
# $`5`
#  [1] 1 2 3 4 5 6 7 8 9 0
# 
# $`6`
# [1] 1 8