【问题标题】:How to check if the first column of a matrix contains a value from a vector如何检查矩阵的第一列是否包含向量中的值
【发布时间】:2013-07-09 10:38:02
【问题描述】:
fn <- function(D, e) {
  for(i in 1:nrow(D)) {
    if(D[i,1] == e) {
      print("y")
    }
  }
}

fn(events, "a")

问题:events 是一个 2×n 矩阵。如果我想在e 中传递c("a","b","c") 而不是"a",那么如何检查if(D[i,1]==e) 条件?

【问题讨论】:

  • 欢迎来到 SO。几个空格和一些缩进在可读性方面大有帮助。
  • 会记住..谢谢。

标签: r function


【解决方案1】:

这很简单:

if any((D[i, 1] %in% e))

【讨论】:

  • if any((D[i, 1] %in% e)) 和 if (D[i, 1] %in% e) 有什么区别?前一个对我不起作用,而后一个对我有用。
  • 请在您的 R 解释器上尝试 ?any?allany 如果任何一个值为 TRUE,则将一个布尔值向量折叠成一个。
【解决方案2】:

我会这样处理它:

x <- matrix(sample(letters, 25), ncol = 5)

> x
     [,1] [,2] [,3] [,4] [,5]
[1,] "k"  "v"  "n"  "l"  "f" 
[2,] "w"  "c"  "y"  "r"  "i" 
[3,] "u"  "p"  "o"  "q"  "j" 
[4,] "g"  "s"  "d"  "t"  "x" 
[5,] "a"  "z"  "b"  "h"  "m" 

e <- c("r", "e", "d")
apply(x, 1, function(x, e) any(x %in% e), e = e)

[1] FALSE  TRUE FALSE  TRUE FALSE

【讨论】:

    猜你喜欢
    • 2011-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2021-04-11
    • 1970-01-01
    • 2016-09-06
    相关资源
    最近更新 更多