我遇到了这个问题,因为我正在解决一个问题,我必须创建一个函数来读取一堆CSV文件到R中,然后计算特定数量的平均值作为指定文件的聚合
这是我创建这个功能的尝试。这里id是用户输入的指定他/她想要读取的文件名
pollutantmean <- function(id){
for (i in id) {
z <- list.files()[i]
assign(paste('data', i,sep = ''),read.csv(z))
}
}
在这里,我期望创建一些对象,例如“data 1”或“data 2”,但当我运行pollutantmean时,它不会创建任何对象。
id <- 1:20
for (i in id) {
z <- list.files()[i]
assign(paste('data', i,sep = ''),read.csv(z))
}
当我运行上面的代码时,它会创建指定的对象。为什么会发生这种情况。
1条答案
按热度按时间tf7tbtn21#
assign()
函数的envir
和pos
参数允许您指定在何处执行赋值。在最初的示例中,变量是在函数环境中创建的,而您可能希望赋值发生在.GlobalEnv中...虽然上面的代码 * 将 * 工作,但我应该注意,使用
assign()
函数通常被认为是可怕的R编程实践。更好的解决方案可能是这样的: