【问题标题】:What to do when the "which" function doesn't find the value?当“which”函数找不到值时怎么办?
【发布时间】:2019-02-20 23:44:28
【问题描述】:

当 which 函数找不到该值时,我收到此错误。我希望它简单地返回一个值,表明没有找到任何东西。我该怎么做? 另外我想使用 for 循环来重复数据框中的每个变量,我将如何单独查看数据框中的每一列?我只需要知道如何调用矩阵的列或行,我擅长循环——我已经编程多年,只是对 r 有点新。谢谢!

Day1 = c("S", "Be", "N", "S", "St")
Day2 = c("S", "S", "M", "Ta", "Sa")
Day3 = c("S", "Ba", "E", "Te", "U")
Day4 = c("V")

Week = data.frame(Day1, Day2, Day3, Day4)
print(Week)

n = which(Week$Day4 == "S")

if (n[1] == 1) {
  print("true")
} else {
  print("false")
}

【问题讨论】:

  • 看看length(n)怎么样?

标签: r statistics


【解决方案1】:

which() 函数的输出是一个向量,所以如果没有找到 which() 函数的值是 integer(0) 所以我建议不要在你的 ifstatement n[1] == 1 中将其更改为 @ 987654326@ 表示在给定列中有匹配项。

对于第二个问题,一种简单的方法是使用 data.frames 的索引来遍历列

n_columns <- ncol(Week) 

# this will iterate through all the columns.
for( i in 1:n_columns ){
 idx <- which(Week[ , i] == "S")
}

显然,这将更新每次迭代中的 idx 值,因此如果您要保存“真”/“假”打印,您希望将 True、False 输出保存在向量中。

在代码中,括号表示Week[ rows , columns],如果没有像我的示例Week[ , i ] 这样的输入,则表示您想要获取第i 列的所有行。

希望这会有所帮助!

【讨论】:

  • 这很有帮助!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多