动态生成和命名数据帧

var*_*ble 0 r

我已经看到了其他一些帖子,他们建议将数据帧加载到列表中,但是他们从未解释过什么是可接受的方式来命名动态生成的数据帧.

我已经提出了下面的代码,我想知道这是否是一个好方法,或者我将来会遇到问题?

谢谢,

#create the data frames from all csv files into a list
dfs <- lapply(list.files(pattern="*.csv"),read.csv)

#Give them the correct names
names(dfs) <- regmatches(list.files(pattern="*.csv"),regexpr("^[[:alpha:]]+", list.files(pattern="*.csv")))
Run Code Online (Sandbox Code Playgroud)

另外,我可以命名它们并同时创建它们吗?我不想冒第二次调用时list.files以不同的顺序返回的风险,并且我在数据帧上添加了错误的名称.

MrF*_*ick 5

该Map功能可以更好地自动命名元素.

dfs <- Map(read.csv, list.files(pattern="*.csv"))
Run Code Online (Sandbox Code Playgroud)

然后,您可以names()在生成后进一步编辑列表.或者,你可以保存文件名矢量,而不是调用list.files()多次,并使用setNames正确的走

#create the data frames from all csv files into a list
csvfiles <- list.files(pattern="*.csv")
dfs <- setNames(lapply(csvfiles, read.csv), 
    regmatches(csvfiles,regexpr("^[[:alpha:]]+", csvfiles))
)
Run Code Online (Sandbox Code Playgroud)