使用plyr rename函数重命名r中包含图案的列
我想重命名包含r模式的数据帧中的所有列。也就是说,我想用列名“variable”替换包含“variable”的所有列,例如“htn.variable”。我想我可以从使用plyr rename函数重命名r中包含图案的列,r,rename,design-patterns,plyr,multiple-columns,R,Rename,Design Patterns,Plyr,Multiple Columns,我想重命名包含r模式的数据帧中的所有列。也就是说,我想用列名“variable”替换包含“variable”的所有列,例如“htn.variable”。我想我可以从plyr和grepl使用重命名。我创建了一个示例: exp<-data.frame(htn.variable = c(1,2,3), id = c(5,6,7), visit = c(1,3,4)) require(plyr) rename ( exp, c( names(exp)[grepl ( 'variable',name
plyr
和grepl
使用重命名。我创建了一个示例:
exp<-data.frame(htn.variable = c(1,2,3), id = c(5,6,7), visit = c(1,3,4))
require(plyr)
rename ( exp, c(
names(exp)[grepl ( 'variable',names(exp))] = "variable" ))
exp为什么还要麻烦rename
colnames(exp)[grepl('variable',colnames(exp))] <- 'variable'
colnames(exp)[grepl('variable',colnames(exp))]我不能100%确定这是否是您需要的,但这可能是一个开始。我远离普利尔
for (i in 1:ncol(exp)){
if (substr(names(exp)[i],5,12) == "variable"){
names(exp)[i] <- "new.variable" #or any new var name
}
}
exp
for(1中的i:ncol(exp)){
if(substr(name(exp)[i],5,12)=“变量”){
名称(exp)[i]如果只想替换列名中等于“变量”的部分,请使用:
colnames(exp) <- gsub('variable', 'replace string', colnames(exp))
colnames(exp)这是优雅的,谢谢分享。我总是惊讶于绕过for循环是多么容易。很好的解决方案+1!唯一的“竞争对手”将是数据表中的集合名,它也与df
一起工作。我非常感谢!再次感谢。反对票是什么?这不是最好的答案,但不是“不有用”。这是可行的,并且可以满足提交者的需要。我在这里猜测,但我认为一些不足之处包括:(1)当矢量化选项随时可用时,缺乏矢量化,(2)使用substr
是脆弱的,因为OP只提到包含字符串“变量的名称,这假设字符串每次正好出现在4个字符之后。主要问题已经由@joran指出。但是(如果我太仔细的话,很抱歉)你使用了太多的偏执…因为for
和if
中都只有一个表达式,你不需要花括号,这会使代码变慢。这可能看起来很奇怪,但特别是在简单的数学计算中(大部分时间都花在循环中),你可以用{
要慢40%。嗨,Michelle,这很有趣,我没有意识到大括号会减慢代码的速度。我使用大括号是为了清晰和结构。无论如何,这是有用的反馈。更重要的是,在元级别上:对功能性的评论(尽管显然不是最佳的)进行否决排除SO成员帮助他人的任何动机。除非有明显错误和误导性的事情,否则我认为不投票比不投票更合适。请至少添加一句简单的句子来解释其作用。
rename ( exp, “variable” = names(exp)[grepl ( 'variable',names(exp))])