【问题标题】:Replace variables containing a specific substring替换包含特定子字符串的变量
【发布时间】:2019-01-23 20:30:14
【问题描述】:

我正在尝试整理包含一列字符串的数据集。大多数字符串是同一单词的排列(例如“banana_test”、“banana2”等)。我想用原始单词替换所有这些排列,即“香蕉”。

我尝试使用 dplyr 包中的“包含”命令来执行此操作。

fruit <- c("apple", "pear", "banana", "pear", "apple", "bad banana")
replace(fruit, contains("banana"), "banana")

我没有用“香蕉”替换“坏香蕉”,而是收到以下错误消息: 错误:没有注册 tidyselect 变量

我能做些什么来解决这个问题?

【问题讨论】:

  • dplyr 用于数据帧。您的示例仅显示了一个向量,而不是数据框,因此大多数 dplyr 函数将不起作用。您应该搜索在 R 中处理字符串的函数。请参阅 ?grepstringi 包,或搜索 SO、there's probably a great answer or 3 here

标签: r dplyr


【解决方案1】:

dplyr 中的 contains() 函数是一个选择助手,实际上来自 tidyeselect now-a-days(请参阅 ?select_helpers)。它旨在用于查找列名,而不是通用字符串匹配。 tidyverse 中更好的选择可能是 str_which 来自 stringr

replace(fruit, str_which(fruit, "banana"), "banana")

【讨论】:

  • 谢谢!这正是我想要的。
猜你喜欢
  • 2016-06-13
  • 1970-01-01
  • 2014-03-30
  • 1970-01-01
  • 2017-06-21
  • 2019-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多