通过将参数传递给R中的函数来读取文件

时间:2014-01-20 01:52:37

标签: r

我试图通过将参数传递给R中的函数来读取文件。相同的语法在函数外部但不在函数中。

> corr <- function(directory){
z <- sprintf("C:\\Users\\rajat\\Documents\\education\\Coursera\\Computing for Data  Analysis\\%s\\001.csv",directory)
print(z)
data2<-read.csv(z)
}
corr(directory="specdata")
[1] "C:\\Users\\rajat\\Documents\\education\\Coursera\\Computing for Data Analysis\\specdata\\001.csv"
> data2
> Error: object 'data2' not found

不使用功能的人会给出正确的结果。

  > directory="specdata"
  > z <- sprintf("C:\\Users\\rajat\\Documents\\education\\Coursera\\Computing for Data Analysis\\%s\\001.csv",directory)
  > print(z)
  [1] "C:\\Users\\rajat\\Documents\\education\\Coursera\\Computing for Data Analysis\\specdata\\001.csv"
  > data1<-read.csv(z)

  > str(data1)
  'data.frame': 1461 obs. of  4 variables:
  $ Date   : Factor w/ 1461 levels "2003-01-01","2003-01-02",..: 1 2 3 4 5 6 7 8 9 10 ...

1 个答案:

答案 0 :(得分:2)

data2只存在于corr函数的环境中。要使其全球可用,请执行data2<<-read.csv(z)。然后它将在函数外部找到。更多信息:http://stat.ethz.ch/R-manual/R-patched/library/base/html/assignOps.html

免责声明:更简洁的方法是从函数中返回数据:

corr <- function(directory) {
  z <- sprintf("C:\\Users\\rajat\\Documents\\education\\Coursera\\Computing for Data  Analysis\\%s\\001.csv",directory)
  print(z)
  return(read.csv(z))
}

data2 <- corr(directory="specdata")
data2

请参阅下面的@thelatemail评论。