【发布时间】:2016-10-02 12:54:21
【问题描述】:
是否有一种“dplyr 方式”可以根据变量名称转换器 (vt) 重命名来自 data.frame 的变量子集,该 data.frame 包含具有旧变量名称和新变量名称的列(分别为 old_varname 和 new_varname) . 例如:
d <- iris
vt <- data.frame(old_varname=c('Sepal.Length','Petal.Length'),
new_varname=c('a','b'))
d <- d %>% rename_( .... )
#In base R code, this would be:
names(d)[names(d) %in% vt$old_varname] <- vt$std_varname
编辑: 进一步澄清:
- 假设要翻译的变量向量很长,那么手工编写新旧名称对是不可行的
- 要重命名的变量是总变量的子集,我还是想保留所有变量
【问题讨论】:
-
我认为对于这种情况,使用 base-R 解决方案会更好。有什么不适合你的?
-
@Shorpy:问题是我为繁重的数据操作加载了 data.table。 Data.table 改变了子集 "[ ]" 的 sintax 并破坏了一些代码。所以我试图在 dplyr 中包含与元数据相关的代码。