如何将变量用作函数的参数,特别是R

时间:2016-03-05 12:33:00

标签: r variables scope arguments unzip

我正在编写一个R函数,它使用read.csv()和unz()从ZIP文件的子目录中读取CSV文件而不先解压缩。

CSV文件以前导0命名,如00012.csv,00013.csv等。

该函数具有以下参数:MyZipFile,ASubDir,VNum(一个矢量,例如1:42),形成文件名。

我想要的是在unz()中使用变量PathNfilename。

# Incorporate the directory in the ZIP file while constructing the filename using stringr package
PathNfilename <- paste0("/", ASubDir, "/", str_pad(Vnum, 5, pad = "0"), ".csv", sep="")     

有效的是:

csvdata <- read.csv(unz(description = "MyZipFile.zip", filename = "ASubDirectory/00039.csv"), header=T, quote = "")

我需要的是以下几点:

csvdata <- read.csv(unz(description = "MyZipFile.zip", filename = PathNFileName), header=T, quote = "")

我得到的错误是:

  

open.connection错误(文件,&#34; rt&#34;):无法打开连接
      另外:警告信息:
      在open.connection(文件,&#34; rt&#34;)中:
        无法找到文件&#39; /ASubDir/00039.csv'在zip文件&#39; MyZipFile.zip&#39;

我想了解为什么我会收到错误以及如何解决错误。这是一个范围问题吗?

1 个答案:

答案 0 :(得分:0)

尝试使用不带前导PathFilename

/
ASubDir <- "ASubDirectory"
Vnum <- 1:5

PathNfilename <- file.path(ASubDir, 
                           paste0(str_pad(Vnum, 5, pad = "0"), ".csv")
)

PathNfilename
#> [1] "ASubDirectory/00001.csv" "ASubDirectory/00002.csv"
#> [3] "ASubDirectory/00003.csv" "ASubDirectory/00004.csv"
#> [5] "ASubDirectory/00005.csv"