我想做的事情: 将列表中的对象乘以不同列表中的另一个对象?我需要将列表A中1000个值的向量乘以列表B中1000个值的向量。
例如:
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)
答案 0 :(得分:6)
您可以使用Map
功能。如果需要,这也可以保留数据的列表结构。如果你没有,你可以简单地使用unlist
:
Map('*',l1,l2)
[[1]]
[1] 4
[[2]]
[1] 10
[[3]]
[1] 18
数据强>:
l1<-list(1,2,3)
l2<-list(4,5,6)
答案 1 :(得分:3)
基于您在所提供的代码段中将列表相乘,我将假设列表仅包含您想要多个的向量。我可能会评论澄清这一点,但我没有代表。
您是否尝试过“不公开”?
unlist(cinput.data)*unlist(l1)
这远非复杂,但从你单独给出的细节来看,我不明白为什么它不会做你想要的。
答案 2 :(得分:1)
我认为您只想将列表中的数字相乘:
> ListA <- list(1,2,3)
> ListB <- list(4,5,6)
> ListAB <- list(unlist(ListA)*unlist(ListB))
> ListAB
[[1]]
[1] 4 10 18
将列表称为&#34;向量&#34;在R中令人困惑,因为&#34; vector&#34;在R
中有另一种含义