1) read.table
使用read.table 获取每个单元格中的第一个数字,给出向量firstNo。然后使用replace 将这些单元格替换为< 5。
原始输入 A 被保留,这通常是为了使其更易于测试和调试,但如果您更愿意覆盖它,请将第二行代码的左侧替换为 A。
没有使用正则表达式,也没有使用包。
firstNo <- read.table(text = A)[[1]]
B <- replace(A, firstNo < 5, "< 5")
B
给予:
[,1] [,2]
[1,] "< 5" "< 5"
[2,] "< 5" "5 (2.5-7.5)"
[3,] "< 5" "7 (5-9)"
虽然问题中的示例输入不需要,但如果左括号后的文本可能不规则,那么您可能需要将fill=TRUE 或comment.char = "(" 参数添加到read.table。
2) gsubfn
gsubfn 类似于gsub,只是它将正则表达式中的捕获组,即正则表达式的括号部分,输入到第二个参数中以公式表示法表示的函数中,然后用输出替换匹配项函数。
library(gsubfn)
B <- replace(A,
TRUE,
gsubfn("^(\\d) (.*)", ~ if (as.numeric(x) < 5) "< 5" else paste(x, y), A)
)
B
给予:
[,1] [,2]
[1,] "< 5" "< 5"
[2,] "< 5" "5 (2.5-7.5)"
[3,] "< 5" "7 (5-9)"