而循环在 R 挑战中

  • 本文关键字:挑战 循环 r
  • 更新时间 :
  • 英文 :


我有一个包含 2 列的数据集,由布尔列和值组成。我想使用 while 循环找到 F 值的总和。Coe 如下所示,但给出错误:

sum <- 0
FM <- 0
idx <- 1
while ( idx <= nrow(dataset)){
if(subset(dataset,boolean=="F")){
sum <- sum + dataset [ idx,"value" ]
FM <- FM + 1
}
idx <- idx + 1
}
print(sum)

错误消息是:idx 中的错误:找不到对象"idx">

如果你计算sum的逻辑值,你会得到有多少个TRUE值存在。由于在这种情况下,当您要计算FALSE值的数量时,我们可以否定这些值,然后使用sum.

sum(!df$boolean)
#[1] 2

但是,我想您希望在while循环中做到这一点。您可以循环访问boolean列中的每个值,检查它是否FALSE并增加计数。

i <- 1
FM <- 0
while(i <= nrow(df)) {
if(!df$boolean[i]) 
FM <- FM + 1
i <- i + 1
}
FM
#[1] 2

我们也可以在没有if条件的情况下做到这一点

while(i <= nrow(df)) {
FM <- FM + !df$boolean[i]
i <- i + 1
}

数据

df <- data.frame(boolean= c(TRUE,FALSE,TRUE,TRUE,FALSE),value=c(8,16,4,12,9))

最新更新