BiX*_*XiC 2 r names lapply dataframe
我想更改数据框中的一些名称 df
> names(df)[17:26]
[1] "X1." "X2." "X3." "X4." "X5." "X6." "X7." "X8." "X9." "X10."
Run Code Online (Sandbox Code Playgroud)
我想要"X" - >"到达"并删除点.我用lapply:
change <- function(d){
gsub("X","reach",d)
gsub("\\.","",d)
}
a <- as.character(lapply(names(df)[17:26], change))
Run Code Online (Sandbox Code Playgroud)
但"X"没有改变.为什么?
> a
[1] "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10"
Run Code Online (Sandbox Code Playgroud)
您可以在单个gsub使用后引用(模式表达式的括号部分)中执行此操作.
x <- names(df)[17:26]
gsub( "X([0-9]+)." , "Reach\\1" , x )
# [1] "Reach1" "Reach2" "Reach3" "Reach4" "Reach5" "Reach6" "Reach7" "Reach8" "Reach9" "Reach10"
Run Code Online (Sandbox Code Playgroud)
我们匹配您的名字向量中的数字,[0-9]+并在括号中包围它们,我们制作所谓的后向引用.我们可以通过它的后引用来引用括号内匹配的东西.因为这是第一组括号,所以它的后引用是\\1.如果我们有另一组括号,我们可以将其称为\\2.所以我们匹配X,然后是一些数字然后匹配..我们用Reach括号中的数字和括号内的数字替换它,使用后引用\\1.
我希望这个解释有意义!这不是最清楚的.
| 归档时间: |
|
| 查看次数: |
88 次 |
| 最近记录: |