r - 一起使用 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 = '')
有谁知道为什么会这样?
解决方案
对于?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 = '')
推荐阅读
- vespa - 搜索延迟是否会随着文档大小而增加?
- docker - docker 本地注册表“exec:\”htpasswd\“:$PATH 中找不到可执行文件”
- matlab - matlab imagesc()图的可变网格大小
- asp.net - 可空枚举下拉列表无法按预期工作
- azure-iot-sdk - .NET 从 Microsoft.Azure.Devices.Client.ModuleClient 获取 DeviceId
- python - 需要新手帮助
- ignite - Spark 作业在尝试从 ignite 集群中获取数据时无限期卡住
- android - 如何在 android studio 中为 AppGallery 签署我的 Bundle 应用程序?
- android - 关于如何为网络请求做队列系统的建议(连接不良时)
- python - 从列表中删除多个管道