使用通配符 r 删除文本替换
Deleting Text Substings with a Wildcards r
我想删除属于向量一部分的几个文本字符串的一部分。我想删除的实例是#.##oz。其中 # 是 1 到 9(含)之间的任意整数。
FoodVector <- c("kraft easy mac cup 2.05oz each", "tuna kit bumble bee 3.05oz each", "lance cheddar cheese wh grain 1.50oz each", "some item 1.0oz")
结果应该是:
[1] kraft easy mac cup each
[2] tuna kit bumble bee each
[3] lance cheddar cheese wh grain each
[4] some item 1.0oz
对于这样的事情,我通常会使用 gsub() 或 str-replace()。但是我无法弄清楚通配符语言。例如
gsub("*.**oz", "", FoodVector)
结果:
Error in gsub("*.**", "", FoodVector) :
invalid regular expression '*.**', reason 'Invalid use of repetition operators'
您可以使用 gsub 删除单个数字的所有实例,然后是 .
,然后是两位数字,然后是 space。
注意:您的描述说的是 1 到 9 之间的整数,没有提到 space。此解决方案查找 0 到 9 之间的数字,还查找 space,以匹配问题中显示的结果
gsub('\d{1}\.\d{2}oz ', '', FoodVector)
# [1] "kraft easy mac cup each"
# [2] "tuna kit bumble bee each"
# [3] "lance cheddar cheese wh grain each"
# [4] "some item 1.0oz"
为了解决 Rui 下面的观点,您可以允许 space 在 d.ddoz 之前或之后
FoodVector <- c(FoodVector, '1.23oz some words', 'more words 3.45oz')
gsub('\d{1}\.\d{2}oz | \d{1}\.\d{2}oz', '', FoodVector)
# [1] "kraft easy mac cup each"
# [2] "tuna kit bumble bee each"
# [3] "lance cheddar cheese wh grain each"
# [4] "some item 1.0oz"
# [5] "some words"
# [6] "more words"
我想删除属于向量一部分的几个文本字符串的一部分。我想删除的实例是#.##oz。其中 # 是 1 到 9(含)之间的任意整数。
FoodVector <- c("kraft easy mac cup 2.05oz each", "tuna kit bumble bee 3.05oz each", "lance cheddar cheese wh grain 1.50oz each", "some item 1.0oz")
结果应该是:
[1] kraft easy mac cup each
[2] tuna kit bumble bee each
[3] lance cheddar cheese wh grain each
[4] some item 1.0oz
对于这样的事情,我通常会使用 gsub() 或 str-replace()。但是我无法弄清楚通配符语言。例如
gsub("*.**oz", "", FoodVector)
结果:
Error in gsub("*.**", "", FoodVector) :
invalid regular expression '*.**', reason 'Invalid use of repetition operators'
您可以使用 gsub 删除单个数字的所有实例,然后是 .
,然后是两位数字,然后是 space。
注意:您的描述说的是 1 到 9 之间的整数,没有提到 space。此解决方案查找 0 到 9 之间的数字,还查找 space,以匹配问题中显示的结果
gsub('\d{1}\.\d{2}oz ', '', FoodVector)
# [1] "kraft easy mac cup each"
# [2] "tuna kit bumble bee each"
# [3] "lance cheddar cheese wh grain each"
# [4] "some item 1.0oz"
为了解决 Rui 下面的观点,您可以允许 space 在 d.ddoz 之前或之后
FoodVector <- c(FoodVector, '1.23oz some words', 'more words 3.45oz')
gsub('\d{1}\.\d{2}oz | \d{1}\.\d{2}oz', '', FoodVector)
# [1] "kraft easy mac cup each"
# [2] "tuna kit bumble bee each"
# [3] "lance cheddar cheese wh grain each"
# [4] "some item 1.0oz"
# [5] "some words"
# [6] "more words"