我正在尝试做的事情:将列表中的对象乘以不同列表中的另一个对象?我需要将列表A中1000个值的向量乘以列表B中1000个值的向量.
例如:
List_A中的向量:
1
2
3
Run Code Online (Sandbox Code Playgroud)
List_B中的向量:
4
5
6
Run Code Online (Sandbox Code Playgroud)
我想要的输出向量,List_A*B:
4
10
18
Run Code Online (Sandbox Code Playgroud)
我在{lgcp}包中找到了一个名为multiply.list()的东西,但显然并不是所有的依赖都存在了所以我不能使用它...我尝试使用lapply(不起作用,x*l1中的错误:非 - 二元运算符的数字参数)和mapply(创建矩阵,而不是直接乘以值).
我在循环中执行所有这些操作,但cinput.data和l1都是列表的指定部分.
#l2<-lapply(cinput.data, function(x) x*l1)
#l2<-mapply('*',cinput.data, l1)
Run Code Online (Sandbox Code Playgroud)
你可以使用这个Map功能.如果需要,这也可以保留数据的列表结构.如果你不这样做,你可以简单地使用unlist:
Map('*',l1,l2)
[[1]]
[1] 4
[[2]]
[1] 10
[[3]]
[1] 18
Run Code Online (Sandbox Code Playgroud)
数据:
l1<-list(1,2,3)
l2<-list(4,5,6)
Run Code Online (Sandbox Code Playgroud)
小智 3
根据您在提供的代码片段中将列表相乘的基础,我将假设列表仅包含您想要相乘的向量。我可能会发表评论来澄清这一点,但我没有代表。
您是否尝试过“取消列出”?
unlist(cinput.data)*unlist(l1)
Run Code Online (Sandbox Code Playgroud)
它远非复杂,但从您单独提供的细节来看,我不明白为什么它不能达到您想要的效果。