在R控制台中工作但不在功能中 - 必须是简单的

时间:2015-06-11 20:26:25

标签: r function console

在函数中有这个:

pollutantmean <- function(){
  xframe <- data.frame()
  list <- list.files()
  listlen <- length(list.files)

  for (i in listlen){
    xframe<- rbind(xframe,read.csv(list[i]))
  }

 subid <- xframe[which(xframe[,'ID']== 3),]
  mean(subid$nitrate, na.rm = TRUE)

}

如果我在控制台中运行单独的行,那么

但是在R的干净实例中输入并运行该函数:

> pollutantmean()
[1] NaN

然后当我尝试检查时:

> xframe
Error: object 'xframe' not found

谢谢, 比利

2 个答案:

答案 0 :(得分:1)

您要求的是xframe函数本地的对象(pollutantmean)。它在.GlobalEnv环境中不存在(但仅存在于函数内部),因此错误。阅读the section on lexical scope from Hadley Wickham's book可能对您有用。

答案 1 :(得分:0)

也许有更多的错误,但我立刻看到的是,当你建立for循环时,你并没有说出你的想法。您确定要获得的序列是:for (i in 1:listlen)

看看这个例子:

> for(i in 5) print("Stackoverflow")
[1] "Stackoverflow"
> 
> for(i in 1:5) print("Stackoverflow")
[1] "Stackoverflow"
[1] "Stackoverflow"
[1] "Stackoverflow"
[1] "Stackoverflow"
[1] "Stackoverflow"

length只有一个数字,你把自己放在我的代码的第一个例子中,这不是你想要的。

您的代码中可能还有其他错误。