r - 如何在字符串中查找某个部分并只保留该部分

标签 r

找到例如字符串“:[1-9]*”并只保留那部分的最干净的方法是什么?

您可以使用 regexec 来获取起点,但是没有更简洁的方法来立即获取值吗?

例如:

test <- c("surface area: 458", "bedrooms: 1", "whatever")
regexec(": [1-9]*", test)

我如何立即得到只是
c(": 458",": 1", NA )

最佳答案

您可以使用可以很好地处理此问题的基础 R。

> x <- c('surface area: 458', 'bedrooms: 1', 'whatever')
> r <- regmatches(x, gregexpr(':.*', x))
> unlist({r[sapply(r, length)==0] <- NA; r})
# [1] ": 458" ": 1"   NA  

虽然,我发现这样做要简单得多......
> x <- c('surface area: 458', 'bedrooms: 1', 'whatever')
> sapply(strsplit(x, '\\b(?=:)', perl=T), '[', 2)
# [1] ": 458" ": 1"   NA 

关于r - 如何在字符串中查找某个部分并只保留该部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25594421/

相关文章:

r - 在散点图中按因子分割点

R:ggplot使用文本+数字对变量进行排序

r - 以数据帧 + r + lme 的形式访问 Intervals.lme 的结果

r - 在 data.table 列中分割文本字符串

r - 使用循环在 r 中创建包含 ICC 结果的表

r - 如何以编程方式创建 R 函数?

r - 每次变量值更改时生成新的组 ID

r - 编写一个程序,从以 10 为底的数字 x 到 R 中以 16 为底的数字的向量

R Shiny selectize.js 项目创建

r - 以预定顺序对向量进行排序