首页 > 解决方案 > 如何从 R 列表中的数据框名称中提取数字?

问题描述

我有一个名为 list.data 的列表,其中包含 600 多个数据框。每个数据框都有一个唯一的名称,例如 4dMU6_20080605tp.txt,名称中是一个日期“20080605”,我想提取并添加到每个数据框的新列中。

我已经在每个数据框中创建了新列,列标题为“日期”,但现在需要从多个数据框名称中提取数字 - 知道我该怎么做吗?

我已经尝试过 sapply 但大概它不起作用,因为它正在搜索与数据框名称相反的数据框。

sapply(list.data, function(x){as.numeric(x[8])})

任何帮助将不胜感激!

标签: rlistdataframesapply

解决方案


使用lapply,我们可以Date为列表中的每个数据框添加新列,用于gsub从每个列表元素的名称中获取日期。

lst_names <- names(list.data)
list.data <- lapply(lst_names, function(x) {
    list.data[[x]]$Date <- gsub("^.*_|[A-Za-z]*\\.\\w+$", "", x)
    return(list.data[[x]])
})
names(list.data) <- lst_names

推荐阅读