Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如果列的每一行没有';我无法控制它_R_Regex_Dataframe_Apply - Fatal编程技术网

R 如果列的每一行没有';我无法控制它

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:

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