我有一个数据框列表,其中的列有命名。
如果我想要更改列表中数据框的名称(而不是更改父列表的名称),我无法直接通过names()或colnames()访问它们,而必须使用lapply()获取名称。
但是,如果我使用lapply返回列名称,则它们仅存在于lapply调用中,并且我无法在父环境中为列表分配新名称。
以下是一个MWE:
1/ 创建对象
如果我想要更改列表中数据框的名称(而不是更改父列表的名称),我无法直接通过names()或colnames()访问它们,而必须使用lapply()获取名称。
但是,如果我使用lapply返回列名称,则它们仅存在于lapply调用中,并且我无法在父环境中为列表分配新名称。
以下是一个MWE:
1/ 创建对象
require(xts)
data(sample_matrix)
x <- as.xts(sample_matrix)
y <- lapply(split(x, "months"), data.frame)
2/ 数据框的列名不太容易直接访问
names(y)
空值
colnames(y)
NULL
3/ 我们可以尝试使用lapply函数
lapply(y, function(z) names(z) <- c('Op', 'Hi', 'Lo', 'Clo'))
[[1]]
[1] "Op" "Hi" "Lo" "Clo" ...
但实际上它并没有给对象分配名称。