我有一个包含 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))