【问题标题】:using if(any()) in a for loop在 for 循环中使用 if(any())
【发布时间】:2013-06-21 20:00:25
【问题描述】:

我想像这样生成一个循环:

group1 = c(1,3,7,25)

for (ii in 1:25){
    if (ii == any(group1)){test = 5} else {test=1}
}

我收到关于将我的“双”类型参数强制为逻辑的警告。结果是只使用了我的 else 语句。这是什么意思,我该如何解决这个问题?谢谢。

【问题讨论】:

  • 您要求any() 确定您的向量group1 的任何值是否为真...我想您可能想要any(ii %in% group1)
  • @Justin 也许根本不需要any...?
  • @joran by jove 我想你可能是对的!

标签: r if-statement for-loop any


【解决方案1】:

目前还不清楚你想要什么。可能

 test <- c(1,5)[1+(1:25) %in% group1]

与以下结果相同:

test <- ifelse( 1:25 %in% group1, 5, 1)

哦,好的,我也会制作for-loopy 版本:

test <- integer(25)
for (ii in 1:25){
   if (ii %in% group1){test[ii] <- 5} else {test[ii] <- 1}
                }
test

【讨论】:

  • 完全可以!谢谢迪温!你是对的,我不清楚我的测试输出应该是一个向量。
【解决方案2】:

你使用了错误的任何功能

any(iterable) 

如果可迭代的任何元素为真,则返回真。如果 iterable 为空,则返回 False。

【讨论】:

  • @OzanDeniz:这没有意义。只有一个any 函数。如果 iterable == 0 或 iterable=c(0,0,0,0) 或所有参数都是 FALSEany() 也会返回 FALSE,但如果它们是 False,则不会返回
猜你喜欢
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 2014-03-13
  • 1970-01-01
  • 1970-01-01
  • 2017-08-02
  • 2019-12-04
相关资源
最近更新 更多