命名具有相同名称的列表元素的列

时间:2018-01-16 15:54:15

标签: r list lapply

我的代码如下:

unemp <- c(1:10)
bsp_li <- list(c(1:10),c(11:20),c(21:30))
var_data_rep <- lapply(bsp_li, function(x) {cbind(as.numeric(x), as.numeric(unemp))} )
var_data_rep2 <- lapply(var_data_rep, function(x) {colnames(x) = c("rGDP", "U")} ) 

但它不是我想要的。我想将var_data_rep列表的两个元素命名为c("rGDP", "U")。但相反,值被c("rGDP", "U")覆盖并成为列表的唯一元素..任何人都可以帮忙吗?我需要相同的名字,因为我想稍后估计相同的模型。

1 个答案:

答案 0 :(得分:1)

简单修复:在创建矩阵时输入名称:

var_data_rep <- lapply(bsp_li, function(x) {
  cbind(rGDP = as.numeric(x), U = as.numeric(unemp))
} )

更多迂回修复(为什么你的尝试不起作用):函数返回最后一行。您想要返回x,而不是colnames(x)

var_data_rep2 <- lapply(var_data_rep, function(x) {
  colnames(x) = c("rGDP", "U")
  return(x)
} ) 

花式修复:直接使用colnames<-功能

var_data_rep3 = lapply(var_data_rep, `colnames<-`, c("rGDP", "U"))