【发布时间】:2014-07-09 02:21:57
【问题描述】:
首先,我是一名 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,这个函数应该会吐出数据框,但是当我尝试在对象finally 中调用变量nobs 时,它说找不到对象finally。我意识到这个问题是由于我对词汇范围的主题缺乏了解,我的教授并没有真正明确词汇范围,所以我不完全确定如何在嵌套函数环境中找到对象......任何帮助会很棒。
【问题讨论】:
-
请贴出调用函数
corr并导致错误的代码。 -
对不起,有代码抛出错误,我意识到 finally$nobs 是完全不正确的格式,这就是我需要帮助的...
标签: r object nested-function lexical-scope