使用 gsub 删除 R 中第一个空格之前的所有字符串
Posted
技术标签:
【中文标题】使用 gsub 删除 R 中第一个空格之前的所有字符串【英文标题】:Use gsub remove all string before first white space in R 【发布时间】:2015-12-22 09:35:44 【问题描述】:我有一个这样的数据框:
name weight
r apple 0.5
y pear 0.4
y cherry 0.1
g watermelon 5.0
pp grape 0.5
y apple pear 0.4
... ...
我想删除名称列中第一个空格之前的所有字符。有人可以帮我一个忙吗?谢谢!
【问题讨论】:
【参考方案1】:试试这个:
sub(".*? ", "", D$name)
编辑:
该模式在第一个空格之前查找任何字符零次或多次 (.*
),然后在第一个空格之后捕获一个或多个字符 ((.+)
)。 .*
之后的 ?
使它“懒惰”而不是“贪婪”,这使它在找到的第一个空间处停止。因此,.*?
匹配第一个空格之前的所有内容,该空格匹配找到的第一个空格。
【讨论】:
这很好用,但是 sub() 的模式命令是什么意思?【参考方案2】:如果D
是您的数据框,请尝试
sub(".+? ", "", D$name)
【讨论】:
对不起,我试过了,但是对于“y apple pear”,它只会给我梨而不是苹果梨。我想删除第一个空格而不是最后一个空格之前的所有内容。不过,谢谢! 制作图案:“^[^]+” 尝试将模式更改为".+? "
抱歉,我忘了正则表达式有多贪心。谢谢 BondedDust 和 CactusWoman 让我诚实。【参考方案3】:
假设您的数据框名为“df”
library(reshape2)
df$name = colsplit(df$name," ", names = c("chuck","name"))[,2]
【讨论】:
【参考方案4】:以下解决方案不使用 gsub,但可以使用管道运算符 %>%
将其应用于数据帧。
library(tidyverse)
# The data
df <- structure(list(name = c("r apple", "y pear", "y cherry", "g watermelon",
"pp grape", "y apple pear"), weight = c(0.5, 0.4, 0.1, 5.0, 0.5, 0.4)),
class = "data.frame", row.names = c(NA, -6L))
# Remove the first characters preceding a white space in the column "name"
df2 <- df %>%
mutate(name = str_replace(name, "^\\S* ", ""))
正则表达式"^\\S* "
搜索从字符串开头到第一个空格的所有字符。
【讨论】:
以上是关于使用 gsub 删除 R 中第一个空格之前的所有字符串的主要内容,如果未能解决你的问题,请参考以下文章