只有当它们开始一个字符串时,才用符号+和 - 替换为(+)和( - )

时间:2015-07-13 18:58:27

标签: r replace dataframe

df$X <- gsub("[+]", "(+)", df$X)
df$X<- gsub("[-]", "(-)", df$X)

这两个命令替换了我的列中的所有+和 - 和(+)( - ),即使我只是想要在启动单元格时进行更改。

2 个答案:

答案 0 :(得分:6)

你可以尝试

 df$X <- gsub('^\\+', '(+)',df$X)

 gsub('^\\-', '(-)',df$X)

另一种选择是使用gsubfn一步完成此操作

 library(gsubfn)
 gsubfn("^[+-]", list(`+` = "(+)", `-` = "(-)"), df$X)
 #[1] "(+)234x"    "ab+234"     "(+)cf+43"   "(-)234+49"  "abc-23"    
 #[6] "(-)23ab-34"

数据

 df <- structure(list(X = c("+234x", "ab+234", "+cf+43", "-234+49", 
 "abc-23", "-23ab-34")), .Names = "X", row.names = c(NA, -6L),
 class =   "data.frame")

答案 1 :(得分:2)

这*有效:

df$X2 <- ifelse(regexpr("\\+", df$X)==1 | regexpr("\\-", df$X)==1, paste0("(",
  substr(df$X, 1, 1), ")", substr(df$X, 2, nchar(df$X))), df$X)

*之前发布故障版本的道歉。