我试图在 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/