首先,我是一名 R 初学者,目前正在学习 R 编程课程。它在教授 R 的基础知识方面非常缺乏,所以我试图通过 Stack Overflow 上的优秀贡献者来学习自己。我试图弄清楚嵌套函数是如何工作的,这意味着我还需要了解词法作用域的工作原理。我有一个函数可以计算多个 CSV 文件中的完整案例并立即吐出一张漂亮的表格。
- 这是 CSV 文件: https ://d396qusza40orc.cloudfront.net/rprog%2Fdata%2Fspecdata.zip
这是我的代码,我意识到如果我使用这些
apply
东西会更干净,但它可以按原样工作:complete<- function(directory, id = 1:332){ data <- NULL for (i in 1:length(id)) { data[[i]]<- c(paste(directory, "/", formatC(id[i], width=3, flag=0), ".csv", sep="")) } cases <- NULL for (d in 1:length(data)) { cases[[d]]<-c(read.csv(data[d])) } df <- NULL for (c in 1:length(cases)){ df[[c]] <- (data.frame(cases[c])) } dt <- do.call(rbind, df) ok <- (complete.cases(dt)) finally <- as.data.frame(table(dt[ok, "ID"]), colnames=c("id", "nobs")) colnames(finally) <- c('id', 'nobs') return(finally) }
我现在试图finally
在这个新函数中调用作为上述函数输出的数据帧中的不同变量:
corr<-function(directory, threshold = 0){
complete(directory, id = 1:332)
finally$nobs
}
corr('specdata')
如果没有finally$nobs
这个函数,它应该会吐出数据框,但是当我尝试调用nobs
object 中的变量时finally
,它说finally
找不到 object。我意识到这个问题是由于我对词汇范围的主题缺乏了解,我的教授并没有真正明确词汇范围,所以我不完全确定如何在嵌套函数环境中找到对象......任何帮助会很大。