如何从 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 数据框列名称,而不是数据框的名称。
我有一个名为 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 数据框列名称,而不是数据框的名称。