【问题标题】:How to add a column in R, if a value from a matrix exists in another matrix [closed]如果矩阵中的值存在于另一个矩阵中,如何在R中添加一列[关闭]
【发布时间】:2013-09-27 06:01:31
【问题描述】:

我有两个矩阵 x 和 y:

x
  1    4    7   10
  2    5    8   11
  3    6    9   12

y
1
4
3
6

现在我想检查x 的第一列中的值是否存在于y 中,那么它应该在x 中再添加一列并在其中添加yes,如果不存在则添加non并存储在名为 m 的第三个矩阵中。

基本上我应该得到这样的答案:

m
1    4    7   10    yes
2    5    8   11    non
3    6    9   12    yes

【问题讨论】:

  • 欢迎来到 Stack Overflow!看起来您希望我们为您编写一些代码。虽然许多用户愿意为陷入困境的程序员编写代码,但他们通常只在发布者已经尝试自己解决问题时才提供帮助。展示这项工作的一个好方法是包含您迄今为止编写的代码、示例输入(如果有的话)、预期输出和您实际获得的输出(控制台输出、堆栈跟踪、编译器错误 - 无论是什么适用的)。您提供的详细信息越多,您可能收到的答案就越多

标签: r matrix


【解决方案1】:

假设你的矩阵“x”和你的向量“y”是:

x <- structure(c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12), .Dim = 3:4)
x
#      [,1] [,2] [,3] [,4]
# [1,]    1    4    7   10
# [2,]    2    5    8   11
# [3,]    3    6    9   12
y <- c(1, 4, 3, 6)

您可以使用apply 将“x”的每一行与您的向量“y”进行比较。使用cbind 将该比较的结果作为新列添加到名为“m”的新matrix。值“1”表示TRUE(或“是”),值“0”表示FALSE(或“非”)。

m <- cbind(x, apply(x, 1, function(z) any(z %in% y)))
m
#      [,1] [,2] [,3] [,4] [,5]
# [1,]    1    4    7   10    1
# [2,]    2    5    8   11    0
# [3,]    3    6    9   12    1

如果您真的想要“是”和“非”值,我建议您使用 data.frame 而不是 matrix,因为 matrix 只能包含一种类型的值,而 data.frame 可以每列有不同类别的数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2011-08-10
    相关资源
    最近更新 更多