如何从 R 列表中的数据框名称中提取数字?

How can I extract numbers from dataframe names in a list in R?

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

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

我试过 sapply 但可能它不起作用,因为它正在搜索与数据框名称相反的数据框。

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

如有任何帮助,我们将不胜感激!

使用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

如果您只想从列表中的姓名中提取数字,可以使用此 str_extract(names(list.data), "\-*\d+\.*\d*")。请注意,names(list) returns 数据框列名称,而不是数据框的名称。