gpt4 book ai didi

r - 将矩阵中的列表与 R 中的另一个矩阵进行比较

转载 作者:行者123 更新时间:2023-12-04 10:01:02 25 4
gpt4 key购买 nike

我有两个维度的矩阵。矩阵中的一些单元格是 NA,其他单元格填充了列表列表。如果矩阵 1 中的单元格中有列表,则矩阵 2 中的相应单元格中总会有列表。

我需要的是另一个矩阵,它计算矩阵 1 的每个列表中的每个项目在矩阵 2 中的相应单元格中的次数。

以下是矩阵:

> matrix_1
[,1] [,2]
[1,] NA c(1001, 1002)
[2,] c(1001, 1003) NA

> matrix_2
[,1] [,2]
[1,] NA c(1001, 1002, 1004)
[2,] c(1001, 1003, 1001) NA

这是我要找的:
     [,1]    [,2]     
[1,] NA 2
[2,] 3 NA

输出矩阵的单元格 [2,1] 为 3,因为 1003 在此单元格的矩阵 2 内的相应列表中出现一次,而 1001 出现两次。输出矩阵的单元格 [1,2] 是 2,因为 1001 和 1002 在该单元格的矩阵 2 的相应单元格中都出现了一次。

有任何想法吗?我不使用 R 中的大量矩阵,所以我有点迷茫。我可以将其设置为数据框,但计算矩阵可能更容易/更快。

这是dput:
Matrix 1 = structure(list(NA, c(1001, 1003), c(1001, 1002), NA), .Dim = c(2L, 
2L))
Matrix 2 = structure(list(NA, c(1001, 1003, 1001), c(1001, 1002, 1004),
NA), .Dim = c(2L, 2L))

最佳答案

你可以试试下面的代码

res <- Matrix1
res[]<-Map(function(x,y) length(na.omit(match(x,y))),Matrix2,Matrix1)
res[is.na(Matrix1)] <- NA

以至于
> res
[,1] [,2]
[1,] NA 2
[2,] 3 NA

关于r - 将矩阵中的列表与 R 中的另一个矩阵进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61821476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com