【问题标题】:Multiplying two different lists objects in R [duplicate]在R中将两个不同的列表对象相乘[重复]
【发布时间】:2017-07-23 02:36:10
【问题描述】:

我已阅读 Multiplying Combinations of a list of lists in R. 但我仍然无法将其应用于我的案例。

我在 R 中有两个不同的列表:

x <- list(matrix(1:4,nrow=2), matrix(5:8, nrow=2))
y <- list(matrix(c(1,0,0,1), nrow=2), matrix(c(0,1,0,1), nrow=2) )

我想将x 的第一个元素与y 的第一个元素相乘; x 的第二个元素与 y 的第二个元素。也就是说,

x[[1]] * y[[1]]
x[[2]] * y[[2]]

但我不想为每个元素编写一行代码,因为每个列表中有 100 个元素。

【问题讨论】:

  • 查看?mapply?Map
  • 我无法回答,但另一种可能性是使用 purrr 包,其中包含以下行:map2(x, y, function(x, y) x*y)

标签: r


【解决方案1】:

你可以使用map如下图:

Map('*',x,y)

以上代码的输出如下所示:

> Map('*',x,y)
  [[1]]
      [,1] [,2]
[1,]    1    0
[2,]    0    4

 [[2]]
      [,1] [,2]
[1,]    0    0
[2,]    6    8

您可以使用unlist 将列表和多个列表一起取消列出:

Listxy <- list(unlist(x)*unlist(y))
Listxy
[[1]]
[1] 1 0 0 4 0 6 0 8

【讨论】:

    猜你喜欢
    • 2021-01-26
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多