创建一个函数,该函数读取函数参数定义的范围内的多个csv文件

时间:2018-03-28 15:02:56

标签: r csv

如何在R中创建一个以向量作为参数的函数 并上传多个csv文件,其范围由向量?

定义

我做了类似的事情:

my_Funk <- function(x) {
    ## I am initialising function my_Funk that takes on one argument x

    setwd("my_data")
    ## I am setting working directory to my_data

    temp <- list.files(pattern = "*.csv")
    ## I store the list of the *.csv files in the vector temp

    for (i in x) assign(temp[i], read.csv(temp[i]))  
    ## I read only specified portion of the *.csv files into the R environment
    ## The portion defined by the vector x
}

当我将功能上传到全球环境时 然后用my_Funk(1:5)调用它 - 没有任何反应。 我也没有看到任何temp变量或任何csv文件

如果我逐个执行我的功能部分,那就完全正常了 但是,它并不是一个整体的工作

1 个答案:

答案 0 :(得分:0)

您可以将数据存储在数据框列表中。这是一个例子。

# Get the files
temp <- list.files(pattern = "*.csv")
# Load and store your files in a list of data frame
data <- lapply(temp, function(x) read.csv(x, stringsAsFactors = FALSE)) # all the files are loaded
#or
data10 <- lapply(temp[1:10], function(x) read.csv(x, stringsAsFactors = FALSE)) # first 10 files are loaded


# So based on what your started, a function doing this could be
my_Funk <- function(id){
        setwd("my_data")
        temp <- list.files(pattern = "*.csv")
        data <- lapply(temp[id], function(x) read.csv(x, stringsAsFactors = FALSE))
        setNames(data, paste0("df", id)) # set data frame names
}

请注意,如果没有参数,您还可以设置工作目录和temp外部函数。

例如,在使用test <- my_Funk(1:15)调用该函数后,您可以使用test取消列出list2env(test, .GlobalEnv)