R 在列名中替换和删除字符
我有以下变量名称:R 在列名中替换和删除字符,r,regex,gsub,R,Regex,Gsub,我有以下变量名称: vars <- c("var-1.caps(12, For]","var2(5,For]","var-3.tree.(15, For]","var-3.tree.(30, For]") 但它会删除(和]之间的所有内容。它也不会删除符号-,我们可以将其作为一个组捕获。如果存在的模式,请匹配该模式,然后是一个((元字符-因此转义\),然后是一个或多个作为组捕获的数字(\\d+)((…)),后跟、和零个或多个空格(\\s*),然后捕获单词([a-Za-z]+)作为第二个捕获
vars <- c("var-1.caps(12, For]","var2(5,For]","var-3.tree.(15, For]","var-3.tree.(30, For]")
但它会删除
(
和]
之间的所有内容。它也不会删除符号-
,我们可以将其作为一个组捕获。如果存在
的模式,请匹配该模式,然后是一个(
(元字符-因此转义\
),然后是一个或多个作为组捕获的数字(\\d+
)((…)
),后跟、
和零个或多个空格(\\s*
),然后捕获单词([a-Za-z]+
)作为第二个捕获组。在替换中,指定捕获组的反向引用(\\1
,\\2
)以及
)以获得预期的输出
out <- sub("\\.?\\((\\d+),\\s*([A-Za-z]+)\\]$", "_\\1_\\2", vars)
out
#[1] "var-1.caps_12_For" "var2_5_For" "var-3.tree_15_For" "var-3.tree_30_For"
sub('-', '', out)
#[1] "var1.caps_12_For" "var2_5_For" "var3.tree_15_For" "var3.tree_30_For"
out@Fluxy我检查了你的clean_vars
并且它与显示的输出匹配抱歉,我看到var-1.caps_12_For
而不是var1.caps_12_For
。或者我遗漏了什么吗?@Fluxy抱歉,我遗漏了那部分。更新了我是否正确理解在多次发生的情况下,最好使用gsub
?@Fluxy如果您不想插入\uu
,gsub(“\\]\124;-\\\。?\”(?)?
gsub("\\(.*\\]","",vars)
out <- sub("\\.?\\((\\d+),\\s*([A-Za-z]+)\\]$", "_\\1_\\2", vars)
out
#[1] "var-1.caps_12_For" "var2_5_For" "var-3.tree_15_For" "var-3.tree_30_For"
sub('-', '', out)
#[1] "var1.caps_12_For" "var2_5_For" "var3.tree_15_For" "var3.tree_30_For"