【发布时间】:2023-03-24 22:44:01
【问题描述】:
我在 R 中有 2 个列表(my.listA 和 my.listB),每个列表包括 3 个数据框:
da1 <- data.frame(x=c(1,2,3),y=c(4,5,6))
da2 <- data.frame(x=c(3,2,1),y=c(6,5,4))
da3 <- data.frame(x=c(5,4,1),y=c(8,5,7))
my.listA <- list(da1, da2, da3)
db1 <- data.frame(z=c(2))
db2 <- data.frame(z=c(3))
db3 <- data.frame(z=c(4))
my.listB <- list(db1, db2, db3)
我正在尝试获取一个新列表 (my.listAB),以便它包含 3 个数据框,显示 my.listA中数据框的逐个元素乘积> 和 my.listB 根据数据框名称末尾的数字配对,即 da1 中的元素与 db1 中的元素的乘积,db2的da2的乘积和db3的da3的乘积。
这将是我想要的结果:
dab1 <- data.frame(x=c(2,4,6),y=c(8,10,12))
dab2 <- data.frame(x=c(9,6,3),y=c(18,15,12))
dab3 <- data.frame(x=c(20,16,4),y=c(32,20,28))
my.listAB <- list(dab1 , dab2 , dab3)
我尝试了以下方法,但没有成功:
for (i in 1:3) {
my.listAB <- my.listA[[i]]*my.listB[[i]]
};
理想情况下,有人可以使用 lapply 函数指导我找到解决方案吗?
非常感谢!
【问题讨论】:
-
lapply(1:3, function(x) my.listA[[x]] * my.listB[[x]]$z)应该和l <- list(); for (x in 1:3) l[[x]] <- my.listA[[x]] * my.listB[[x]]$z一样有效。 -
非常感谢@lukeA 的帮助!您的代码简洁明了!
-
@lukeA,我不知道如何通过 Stackoverflow 投票按钮感谢您的帮助。有什么线索吗?
-
不客气。我发布了一个答案,您可以查看是否喜欢该答案。