string_split,读取文件并将它们存储到不同的列表中

时间:2019-06-13 19:09:02

标签: r

我有一个要读取的文件名字符串。

它们看起来像:

致电:files_to_read

c:/file1/risk/2001
c:/file1/risk/2002
c:/file1/risk/2003
c:/file1/risk/2004

c:/file1/mgnt/2001
c:/file1/mgnt/2002
c:/file1/mgnt/2003
c:/file1/mgnt/2004

我正在尝试创建一个函数以读取数据并将其存储为列表:以下内容读取字符串中的所有文件并将它们存储在单个列表中:

readdata <- function(fn){

    dt_temp <- fread(fn, sep = ",")
    return(dt_temp)
  }

mylist <- lapply(file_to_read, readdata)

但是,我想将结果存储在2个单独的列表中,一个用于risk,另一个用于mgnt。我有以下不起作用的东西:

readdata <- function(fn){
  function(split){
    risk <- str_subset(cosine_results, pattern = "risk")
    mgnt <- str_subset(cosine_results, pattern = "mgnt")
    dt_temp <- fread(risk, sep = ",")
    return(dt_temp)
  }
}

mylist <- lapply(files_to_read, readdata)

我考虑过基于riskmgnt值进行子设置,并分别读取它们可能会创建一个列表列表,但会中断。

1 个答案:

答案 0 :(得分:2)

这是移动事物的一种方法

readdata <- function(fn){      
  fread(fn, sep = ",")
}

lapply(c("risk", "mgnt"), function(x) {
  lapply(str_subset(files_to_read, pattern = x), readdata)
})

我们只lapply遍历您要匹配的不同模式并过滤要发送到read.data的文件列表。