让我们说我想创建一个列表,其中每个元素都是一个整数向量。
让我们说我有,
a = c(1,2,3,4)
b = c(7,9,10,3)
d = c(90.2,43.1,54.2,12.3)
我想要一个列表,其中列表的元素1是:
c(1,7,90.2)
第二个要素是,
c(2,9,43.1)
,
第三个要素是,
c(3,10,54.2)
,
第四个元素是,
c(4,3,12.3)
。
如果我这样做,
my.list = list(a=a,b=b,d=d)
给了我想要的转置。有没有直接的方法来实现这个目标?
我需要有一个列表,因为我想使用mclapply函数,该函数只将列表作为输入,或者(如果给定的数据帧)将它们强制转换为非期望的列表结构。
请注意,在我的程序中,这个向量非常庞大,有4亿条左右。我正在寻找一种非常快速有效的方法来做到这一点。谢谢!
答案 0 :(得分:2)
kk<-Map(function(x,y,w) c(x,y,w),a,b,d)
> kk[1]
[[1]]
[1] 1.0 7.0 90.2
或者只是:
kk<-Map(`c`,a,b,d)
> kk[1]
[[1]]
[1] 1.0 7.0 90.2
答案 1 :(得分:1)
将你的矢量变成一个data.frame
:
adf<-data.frame(a=a, b=b, d=d)
然后使用apply
将每一行转换为列表元素:
apply(adf, 1, function(x) list(x))