如何使用目录作为R中函数的arg

时间:2014-06-17 19:07:15

标签: r csv

我正在完成一项任务,我写的函数有3个args:包含要评估的表的目录,要由函数评估的列,以及序列1: x其中x是目录中的文件数。

我的困惑是相当基础的,因为我不确定函数需要使用的目录是否需要设置为我的工作目录,或者目录是否需要具有整个文件路径。

理想情况下,我想要调用函数pm("文件夹名称"," colname",4:112 ## random seq)以及函数中发生的任何数学运算

不幸的是,我对语法的了解有点缺乏,目前我正在尝试更改用户输入的序列以匹配文件名,因此我可以使用read.csv脚本只读取与用户定义的序列匹配的表。

pm<-function(directory, sex, id = 1:440){ ##sex is the col arg M/F
i<-id
j<-as.character(i)
j[nchar(j)==1]<-paste("00", j[nchar(j)==1], sep="")
j[nchar(j)==2]<-paste("0", j[nchar(j)==2], sep="")   
j[nchar(j)==3]<-paste(j[nchar(j)==3],".csv", sep="")
print(j)
}

这是我目前计划将用户输入从1:400序列转换为字符向量并使用它来读取我需要的特定表。有没有更有效的方法呢?

1 个答案:

答案 0 :(得分:0)

不要自己计算字符,而是让formatC为你做。

pm <- function(directory, sex, id = 1:440){
  filenames <- paste0(formatC(id, digits = 0, width = 3, format="f", flag = "0"), ".csv")
  filepaths <- file.path(directory, filenames)
  list_of_data_frames <- lapply(filepaths, read.csv)

  # Do things with the data here, such as lapply(list_of_data_frames, your_function)

}