将R中的两个列表对象相乘
问题描述:
我在做什么: 将列表中的对象乘以不同列表中的另一个对象?我需要乘以1000个的值的矢量表A时间1000个的值的矢量名单B.将R中的两个列表对象相乘
例如:
矢量在List_A:
1
2
3
矢量在List_B:
4
5
6
输出矢量我想,List_A * B:
4
10
18
我在{lgcp}包中找到了一个名为multiply.list()的东西,但显然不是所有的依赖关系都存在了,所以我不能使用它...我尝试使用lapply(不起作用,x * l1:二元运算符的非数字参数)和mapply(它创建一个矩阵,不只是直接乘以这些值)。
我在一个循环内完成所有这些,但cinput.data和l1都是列表的指定部分。
#l2<-lapply(cinput.data, function(x) x*l1)
#l2<-mapply('*',cinput.data, l1)
答
在,你在代码清单相乘的基础段,您提供的,我要去假设仅列出包含要多向量。我可能会评论澄清这一点,但我没有代表。
您是否尝试过“非上市”?
unlist(cinput.data)*unlist(l1)
这是远远复杂,但是从你单独给出的细节,我不明白为什么你想要什么也不会做。
答
您可以使用Map
函数。如果你愿意的话,这可以保持数据的列表结构。如果你没有,你可以简单地使用unlist
:
Map('*',l1,l2)
[[1]]
[1] 4
[[2]]
[1] 10
[[3]]
[1] 18
数据:
l1<-list(1,2,3)
l2<-list(4,5,6)
答
我觉得你只是想在名单乘以数相加:
> ListA <- list(1,2,3)
> ListB <- list(4,5,6)
> ListAB <- list(unlist(ListA)*unlist(ListB))
> ListAB
[[1]]
[1] 4 10 18
参考列表作为R中的“向量”令人困惑,因为“向量”在R中具有其他含义R
你是什么意思“列表中的向量”?列表本身是矢量还是列表包含矢量? –
每个列表中有多少个向量? –
这是你正在寻找'mapply(“*”,列表(1:3),列表(1:3),SIMPLIFY = FALSE)? – nrussell