首页 > 解决方案 > 一起使用 select 和 stringr

问题描述

我正在努力

qual %>% select(reasons_code) %>% str_replace('\\+.*',replacement = '')

但我收到警告消息: In stri_replace_first_regex(string, pattern, fix_replacement(replacement), : argument is not an atomic vector; coercing。

但是,当我执行以下操作时,替换工作正常。

str_replace(qual$reasons_code,'\\+.*',replacement = '')

有谁知道为什么会这样?

标签: rdplyrtidyversestringr

解决方案


对于?str_replace,输入string

字符串 - 输入向量。要么是字符向量,要么是可以强制转换的东西。

而来自的输出select是 adata.frame选择了单列。它不会转换为vector. 而不是select,我们可以pull将列作为vector并且它应该可以工作

library(dplyr)
qual %>%
      pull(reasons_code) %>%
      str_replace('\\+.*',replacement = '')

或者,如果我们更喜欢将 OP 的代码与 一起使用select,有几种方法可以转换为vector-unlist是其中之一

qual %>% 
    select(reasons_code) %>% 
    unlist %>%
    str_replace('\\+.*',replacement = '')

推荐阅读