R 如果列的每一行没有';我无法控制它
我有一个数据帧dt:R 如果列的每一行没有';我无法控制它,r,regex,dataframe,apply,R,Regex,Dataframe,Apply,我有一个数据帧dt: dt <- data.frame(id=c(1,2,3),value=c("a","_b","c")) 我知道我可以使用substr函数来检查一个值是否以1开头,但我不想使用循环。我想使用apply函数。我该如何进行?顺便说一句,我对应用函数是新手 ---编辑:感谢大家提供的解决方案。对不起,我过分简化了我的真实情况。在我的实际情况中,我必须为不以&,不同符号开头的值添加前缀。 ---Edit2:只要意识到它是一样的。下面就可以了 dt$value <- gs
dt <- data.frame(id=c(1,2,3),value=c("a","_b","c"))
我知道我可以使用substr函数来检查一个值是否以1开头,但我不想使用循环。我想使用apply函数。我该如何进行?顺便说一句,我对应用函数是新手
---编辑:感谢大家提供的解决方案。对不起,我过分简化了我的真实情况。在我的实际情况中,我必须为不以&,不同符号开头的值添加前缀。
---Edit2:只要意识到它是一样的。下面就可以了
dt$value <- gsub("^([^&].*)", "_\\1", dt$value)
dt$value我们可以使用sub
从字符串的开头(^
)匹配非
的字符(^
),将其捕获为一个组((…)
),并将其替换为
,然后是捕获组的反向引用(\\1
)
levels(dt$value) <- sub("^([^_])", "_\\1", levels(dt$value))
dt$value
#[1] _a _b _c
#Levels: _b _a _c
级别(dt$value)虚拟解决方案,但有效。。。用
替换每个字符串的开头,如果有两个
(
),则只返回一个
dt$value <- sub("__", "_", sub("^", "_", dt$value))
dt$value
#[1] "_a" "_b" "_c"
dt$value另一个选项
dt$value <- gsub("^([^_].*)", "_\\1", dt$value)
dt
id value
1 1 _a
2 2 _b
3 3 _c
dt$value
dt$value <- gsub("^([^_].*)", "_\\1", dt$value)
dt
id value
1 1 _a
2 2 _b
3 3 _c