根据模式匹配R重命名列名

根据模式匹配R重命名列名,r,loops,dataframe,gsub,R,Loops,Dataframe,Gsub,假设我有以下数据帧: xx2xx30x4xx <- rep(5,30) yyyy3yy50y5yyy <- rep(4,30) zz12zzzz70z8zz <- rep(7,30) df <- data.frame(xx2xx30x4xx,yyyy3yy50y5yyy,zz12zzzz70z8zz) 现在,我想让列名与模式相等,匹配模式是50-100之间的数字,而不是更小的数字。这可能吗?如果没有,您是否知道其他通用的方法来重命名所描述的列?提前谢谢 xxxxxx 3

假设我有以下数据帧:

xx2xx30x4xx <- rep(5,30)
yyyy3yy50y5yyy <- rep(4,30)
zz12zzzz70z8zz <- rep(7,30)
df <- data.frame(xx2xx30x4xx,yyyy3yy50y5yyy,zz12zzzz70z8zz)

现在,我想让列名与模式相等,匹配模式是50-100之间的数字,而不是更小的数字。这可能吗?如果没有,您是否知道其他通用的方法来重命名所描述的列?提前谢谢

xxxxxx 30xxxx
sub(\\D+(\\D+\\D+),“\\1”,“xxxxxx 30xxxx”)
是一种方法。查看
?regex
,了解R中可用的regex语法。您只是在寻找
名称(df)吗?是的,这工作(几乎)很好!如果列名称由几个数字组成,例如ZZ2Z3Z70ZZ5Z等,我只想要属于某个范围的数字,比如说从50到100。在这种情况下,它将消除2 3和5也。谢谢查看我编辑的答案:)
xxxxxx30xxxx <- rep(5,30)
yyyyyyy50yyyyy <- rep(4,30)
zzzzzzz70zzzz <- rep(7,30)
df <- data.frame(zzzzzzz70zzzz,yyyyyyy50yyyyy,xxxxxx30xxxx)

grep(pattern = "[0-100]", x = colnames(df), value= T )

new_colnames <- gsub("\\D", "", colnames(df))
colnames(df) <- new_colnames
xxxxxx30xxxx <- rep(5,30)
yyyyyyy50yyyyy <- rep(4,30)
zzzzzzz70zzzz <- rep(7,30)
df <- data.frame(zzzzzzz70zzzz,yyyyyyy50yyyyy,xxxxxx30xxxx)

grep(pattern = "[0-100]", x = colnames(df), value= T )

new_colnames <- gsub("\\D", "", colnames(df))
colnames(df) <- new_colnames
xxxxxx30xxxx <- rep(5,30)
yyyyyyy50yyyyy <- rep(4,30)
zzzzzzz70zzzz <- rep(7,30)
df <- data.frame(zzzzzzz70zzzz,yyyyyyy50yyyyy,xxxxxx30xxxx)

grep(pattern = "[0-100]", x = colnames(df), value= T )

# new_colnames <- gsub("\\D", "", colnames(df))

new_colnames <- regmatches(colnames(df), regexpr("([3-6][0-9])|([7][0])",colnames(df)))

colnames(df) <- new_colnames