在R中将两个列表对象相乘

时间:2016-07-14 15:21:07

标签: r list operations

我想做的事情: 将列表中的对象乘以不同列表中的另一个对象?我需要将列表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)

3 个答案:

答案 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

中有另一种含义