将多个.csv文件导入 R 添加条件 (row.names=1)



在这里找到原始问题和解决方案:将多个.csv文件导入 R

解决方案是:

temp = list.files(pattern="*.csv")
list2env(
  lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
         read.csv), envir = .GlobalEnv)

但我想给read.csv添加一个条件,row.names=1--第一列是行名那么解决方案就不再有效了。有什么建议吗?

正在使用:

temp = list.files(pattern="*.csv")
list2env(
  lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
         read.csv(row.names=1)), envir = .GlobalEnv)

谢谢!

如果使用 lapply 调用函数,则不会像调用函数本身时那样在大括号中编写参数。相反,只需添加如下参数:

list2env(
  x = lapply(
    X = setNames(temp, make.names(gsub("*.csv$", "", temp))), 
    FUN = read.csv, row.names = 1
  ), 
  envir = .GlobalEnv
)

您可以使用以下通用语法lapply

lapply(df, function(x) read.csv(x))

换句话说,您可以指定要应用于df的匿名函数。 将此应用于您的实际代码:

temp <- list.files(pattern=".csv")
list2env(lapply(setNames(temp, make.names(gsub(".csv$", "", temp))),
    function(x) read.csv(x, row.names=1)), envir = .GlobalEnv)

最新更新