我正在进行Coursera R编程课程,并且在尝试将for循环结果绑定到矢量时遇到了麻烦。
我已经确保分析代码在单个表上运行,但我不完全确定如何使其绑定所有332
值。
corr <- function(directory, threshold = 0, id = 1:332) {
filename <- list.files(directory, full.names = TRUE)
a <- numeric()
for(i in id) {
tmp_data <- read.csv(filename[i])
nobs <- sum(complete.cases(tmp_data))
if(nobs < threshold) {
a} else {
nonas <- tmp_data[!is.na(tmp_data$sulfate) & !is.na(tmp_data$nitrate),]
x <- corr(nonas$sulfate, nonas$nitrate)
a[i] <- x
}
}
a
}
当我运行此命令时,我收到此错误:
> x <- corr("specdata", 20)
Error in list.files(directory, full.names = TRUE) :
invalid 'path' argument
在其他功能中,我对list.files
行没有任何问题。我知道我做错了什么,但我无法理解。
答案 0 :(得分:0)
我明白了。我不知不觉在我的代码中有一个递归。它应该是cor(),而不是corr()。
corr <- function(directory, threshold = 0, id = 1:332) {
filename <- list.files(directory, full.names = TRUE)
a <- c()
for(i in id) {
tmp_data <- read.csv(filename[i])
nobs <- sum(complete.cases(tmp_data))
if(nobs > threshold) {
nonas <- tmp_data[!is.na(tmp_data$sulfate) & !is.na(tmp_data$nitrate),]
x <- cor(nonas$sulfate, nonas$nitrate)
a[i] <- x
}
}
b <- na.omit(a)
}