R,在其他情况下在内部使用for循环问题

时间:2019-04-03 14:52:40

标签: r for-loop if-statement

我正在尝试检查向量中的所有元素是否相同。我正在使用此代码:

if( isTRUE(for(i in 1:length(x)){x[1]==x[i]})){print(x[1])} else{print("several")

现在假设

x <- c(0,0,0,0,0,0,0,0,0,0,0) 

此处,代码应返回“ 0”,如果

x <- c(0,0,0,0,0,1,0,0,0,0,0) 

它应该返回“几个”。在这两种情况下,我都得到“几个”,为什么不按预期工作呢? 预先谢谢你。

1 个答案:

答案 0 :(得分:2)

有一种更简单的方法:

if (length(unique(x)) == 1) {
  print(x[1])
} else {
  print("several")
}

如果要将x的所有组件与第一个组件进行比较,则应使用all而不是for循环:

if (all(x == x[1])) {
  print(x[1])
} else {
  print("several")
}

两种方法的结果相同。