gpt4 book ai didi

r - lapply 2个功能在一个命令

转载 作者:行者123 更新时间:2023-12-02 08:33:31 25 4
gpt4 key购买 nike

我想更改数据框中的一些名称 df

> names(df)[17:26]
[1] "X1." "X2." "X3." "X4." "X5." "X6." "X7." "X8." "X9." "X10."

我想要“X”->“Reach”并删除点。我用 lapply:

change <- function(d){
gsub("X","reach",d)
gsub("\\.","",d)
}
a <- as.character(lapply(names(df)[17:26], change))

但是“X”并没有改变。为什么?

> a 
[1] "X1" "X2" "X3" "X4" "X5" "X6" "X7" "X8" "X9" "X10"

最佳答案

您可以在单个 gsub 中使用反向引用(模式表达式的括号部分)执行此操作。

x <- names(df)[17:26]
gsub( "X([0-9]+)." , "Reach\\1" , x )
# [1] "Reach1" "Reach2" "Reach3" "Reach4" "Reach5" "Reach6" "Reach7" "Reach8" "Reach9" "Reach10"

我们使用 [0-9]+ 匹配您的姓名向量中的数字,并通过将它们括在括号中,我们进行所谓的反向引用。我们可以通过其反向引用来引用括号内匹配的内容。由于这是第一组括号,它的反向引用是 \\1。如果我们有另一组大括号,我们可以将其称为 \\2。所以我们匹配 X,然后是一些数字,然后是 .。我们将其替换为 Reach 以及括号内匹配的数字,方法是使用 \\1 引用反向引用。

我希望这个解释是有道理的!这不是最清楚的。

关于r - lapply 2个功能在一个命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24303125/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com