Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用plyr rename函数重命名r中包含图案的列_R_Rename_Design Patterns_Plyr_Multiple Columns - Fatal编程技术网

使用plyr rename函数重命名r中包含图案的列

使用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

我想重命名包含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',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))])