2016-07-14 232 views
2

我在做什么: 将列表中的对象乘以不同列表中的另一个对象?我需要乘以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) 
+0

你是什么意思“列表中的向量”?列表本身是矢量还是列表包含矢量? –

+0

每个列表中有多少个向量? –

+1

这是你正在寻找'mapply(“*”,列表(1:3),列表(1:3),SIMPLIFY = FALSE)? – nrussell

回答

2

在,你在代码清单相乘的基础段,您提供的,我要去假设仅列出包含要多向量。我可能会评论澄清这一点,但我没有代表。

您是否尝试过“非上市”?

unlist(cinput.data)*unlist(l1) 

这是远远复杂,但是从你单独给出的细节,我不明白为什么你想要什么也不会做。

3

您可以使用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

我觉得你只是想在名单乘以数相加:

> 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