【发布时间】:2015-02-24 13:22:56
【问题描述】:
以下数据框:
df <- data.frame(matrix(rnorm(9*9), ncol=9))
names(df) <- c("c_1", "d_1", "e_1", "a_p", "b_p", "c_p", "1_o1", "2_o1", "3_o1")
row.names(df) <- names(df)
...根据“_”之后的常见索引按行名拆分,我将数据帧从列表中释放到全局环境:
list_all <- split(df,sub(".+_","",rownames(df)))
list2env(list_all,envir=.GlobalEnv)
我的许多数据框现在都有数字名称,并且无法轻松寻址,所以我想更改它们的名称。我想在每个名字中添加“df_”,但由于我不知道该怎么做,所以有人告诉我 make.names 可能很好。我创建了一个包含所有唯一索引的向量,并将其分解,我认为它可以保持索引的原始顺序:
indx <- gsub(".*_", "", names(df))
indx1 <- factor(indx, levels=unique(indx))
new.names <- make.names(unique(indx1))
new.names
[1] "X1" "p" "o1"
new.names 按我想要的顺序排列。我将新名称应用于列表,并将其发布到环境中 list_all
现在,数字名称添加了一个前导 X(很好!),但是数据帧的顺序已经改变并且名称被错误地分配(数据帧 p 现在包含所有带有“o1”的行,反之亦然)。
- 问题:
- 是否有一种简单的方法可以将字符串添加到工作区中同一类的对象名称中?
- 如果我要使用 make.names 路由,我怎样才能绝对确保 list_all 中的向量在 与 new.names 中的顺序相同吗?
谢谢!
【问题讨论】:
标签: r