如何使用序列中的值作为新变量名来有条件地重命名数据帧的多个列?

问题描述 投票:0回答:1

我想使用此序列seq的值将x1列重命名为数据框x10df

序列 - 要使用的变量名称

var_names<-seq(10, 23.5, 1.5)

数据框,其中以x开头的所有变量都将通过序列var_names的值重命名

df = 
  data.frame( x1 = rlnorm(10000), x2 = rlnorm(10000), x3 = rlnorm(10000), x4 = rlnorm(10000), x5 = rlnorm(10000), x6 = rlnorm(10000), x7 = rlnorm(10000), x8 = rlnorm(10000), x9 = rlnorm(10000), x10 = rlnorm(10000))

我的尝试

df_renamed <- apply(df, 2, function(x) data.table::setnames(df, old=colnames(x), new=var_names))

## Error in data.table::setnames(df, old = colnames(x), new = var_names) : 
##  'new' is not a character vector 

预期产出

在输出数据帧中,我想将变量名x1替换为10,x2乘以11.5,x3乘13,x4乘以14.5,x5乘16,x6乘17.5,x7乘19,x8乘20.5,x9乘22,x10乘23.5 。

虽然这个变量名称的替换可以使用this和其他方法单独完成,但只有几列,我想要一个函数,使用大型数据集直接使用序列var_names并充分利用所有变量这一事实要重命名,请从x开始。

r
1个回答
2
投票

也许colnames可以胜任这项工作

colnames(df) <- var_names

只是一句话:将数字作为名称不是最好的主意,因为它可能令人困惑并且不易使用(例如,您需要使用``引用这些名称)

© www.soinside.com 2019 - 2024. All rights reserved.