【发布时间】:2015-06-30 13:40:08
【问题描述】:
我正在编写这个函数,而我的循环以不同的方式运行。你能解释一下为什么会这样以及如何纠正吗?
complete <- function(directory, id = 1:332) {
specd <- list.files("specdata", full.names = TRUE)
temp<- vector(mode = "numeric", (length = length(id)))
for (i in id) {
temp[i] <- nrow(na.omit(read.csv(specd[i])))
}
return(data.frame(id = id, nobs = temp))
}
代码:
complete("specdata", 1)OBSERVATION – id = 1; yields 1 answer
id nobs
1 1 117
complete("specdata", 3) OBSERVATION – id = 3; yields 3 answers
id nobs
1 3 0
2 3 NA
3 3 243
complete("specdata", 30:25) OBSERVATION – id = 30; yields 30 answers
complete("specdata", c(2, 4, 8, 10, 12))
在 data.frame(id = id, nobs) 中显示带有调试错误的 Traceback Rerun = temp) :参数暗示不同的行数:5、12
【问题讨论】:
-
你需要给我们一些我们可以粘贴并执行的东西。
-
for (i in id)应该是for (i in 1:id)。 -
@RHertel,它正在正确绘制数字。
-
那么循环似乎完全没有必要......它只检查大小写
i=id。 -
你是对的,
1:length(id)会修复它。 @RHertel。