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

Importing multiple .csv files into R adding condition (row.names=1)

在这里找到原始问题和解决方案: Importing multiple .csv files into R

解决方案是:

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

但我想在read.csvrow.names=1中添加一个条件——第一列是行名 然后解决方案不再有效。有什么建议吗?

正在使用:

temp = list.files(pattern="*.csv")
list2env(
  lapply(setNames(temp, make.names(gsub("*.csv$", "", temp))), 
         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)

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

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