r - 为什么我的 for 循环在 R 中运行一次额外的迭代?

标签 r for-loop if-statement iteration

我试图在 R 中运行以下简单代码,但 for 循环运行一次额外的迭代,我无法弄清楚其背后的原因。你能帮我吗?

fun <- function(x) { 
  y <- as.character(0)
  for (i in 1:length(x)) {
    if (x[i] == "NO") {
      y[i] <- c("Its a NO")
      y <- append(y, y[i])
    } else if (x[i] == "YES") {
      y[i] <- c("Its a YES")
      y <- append(y, y[i])
    } else {
      y[i] <- c("Don't know")
      y <- append(y, y[i])      
    }    
  }
  return(y)
}

a <- c("YES","NA", "NO")

fun(a)

提前非常感谢。

最佳答案

一种选择是将“y”初始化为“x”的长度,然后删除append

fun <- function(x) { 
  y <- character(length(x))
  for (i in seq_along(x)) {
    y[i] <- if (x[i] == "NO") {
      c("Its a NO")  
    } else if (x[i] == "YES") {
      c("Its a YES")        
    } else {
      c("Don't know")
    }
  }
  return(y)
}

a <- c("YES","NA", "NO")

fun(a)
#[1] "Its a YES"  "Don't know" "Its a NO" 

关于r - 为什么我的 for 循环在 R 中运行一次额外的迭代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62071820/

相关文章:

r - 根据 R 中每个组的最后一个非 NA 值填写 NA

r - 距离路径最近的点

c# - 我正在尝试使 RDotNet 与 C# 一起工作,但我遇到了问题

Jquery 鼠标悬停/移出 for 循环

python - 如何迭代 pandas 数据帧行,查找字符串并分成列?

javascript - 如何在 javascript 中在 for-in 中跳到下一个,并在其中一段时间​​?

php - 简单数据库查询的问题

php - 显示记录时如何检查Field是否为空

javascript - 多个 If 语句相互抵消? (Javascript)

r - 基于数据框组 ID 的标准差