r - 将第一行指定为数据框的列名称

标签 r

我试图将数据帧的第一行指定为列名,我的数据帧是动态命名的,例如“frame_1”“frame_2”等

我这样做的方式是:

for( i in 1:length(holder)){
  colnames(eval( parse(text=paste0("frame_",i))) )<- eval( parse(text=paste0("frame_",i,"[1,]")))
}

然而,这会产生神秘的错误:

  target of assignment expands to non-language object

我觉得这令人困惑,因为:

colnames(eval( parse(text=paste0("frame_",i))) )

生成frame_i的列名向量

eval( parse(text=paste0("frame_",i,"[1,]")))

生成frame_i的第一行。

这两个长度相同,如果有人能向我解释这个错误,我将非常感激

一些代码可以生成与我的数据集类似的数据集:

for( i in 1:1000){
assign(paste("frame",i,sep="_"), data.frame(  c("desired_colname", 4, 3, 5, 7) , c("desired_colname2", 3, 1, 2, 3) )) }

所以我想将“desired_colname”作为列名称。

最佳答案

尝试

frame_1 <-  data.frame(c("desired_colname", 4, 3, 5, 7) , 
                                 c("desired_colname2", 3, 1, 2, 3) )
frame_2 <-  data.frame( c("desired_colname", 4, 2, 6, 7) ,
                             c("desired_colname2", 3, 5, 3, 3) )
frame_3 <-  data.frame(c("desired_colname", 5, 6, 9, 5) ,
                             c("desired_colname2", 5, 9, 14, 3) )


holder <- ls(pattern="^frame_")

for(i in holder){
 tmp <- get(i)
 colnames(tmp) <- unlist(get(i)[1,])
 assign(i, tmp)
}

上面的代码也可以写成:

  for(i in holder){
    assign(i, `names<-`(get(i), unlist(get(i)[1,])))
   }


 frame_1
#  desired_colname desired_colname2
#1 desired_colname desired_colname2
#2               4                3
#3               3                1
#4               5                2
#5               7                3


 frame_2
 # desired_colname desired_colname2
 #1 desired_colname desired_colname2
 #2               4                3
 #3               2                5
 #4               6                3
 #5               7                3

另一种选择是使用list2env

   list2env(lapply(mget(holder), function(x)
           {colnames(x) <- unlist(x[1,]);x}), envir=.GlobalEnv)
   #<environment: R_GlobalEnv>

不过,所有这些操作都可以在 list 中完成,然后使用 write.table 将其保存在文件中。

关于r - 将第一行指定为数据框的列名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469943/

相关文章:

r - 在 read_excel R 中打开单元格范围

r - 使用因子变量更改 ggplot 图表的背景颜色

r - 如何在 Shiny 模块中使用 ShinyFiles 包 - 命名空间问题?

r - 将数据分成两个独立的组 s.t.最小化具有一个连续预测变量的残差平方和

r - 从 R 中的数据表中提取唯一行

r - 从具有指定样本量的组中进行简单随机抽样

r - 条形图 - 两个相邻的条形图和单独窗口中的条形图

R加速方阵的矢量化

r - 我如何 "restart"cur_group_id() 在 R

r - 如何使用 rvest R 从谷歌新闻中获取头条新闻?