如何在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文件
如果我逐个执行我的功能部分,那就完全正常了 但是,它并不是一个整体的工作
答案 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)
。