在这里找到原始问题和解决方案:将多个.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)