r - 在R中如何将列作为参数传递给strsplit?
问题描述
将列作为参数传递给 str_split 函数并将其识别为列的正确方法是什么?
library(tidyverse)
library(lazyeval)
df = data.frame("x"=c("apple/pear","pear/banana/kiwi","orange/pear"))
function (col) {
mtcars %>%
select(col) %>%
transform(col = interp(strsplit(~v, "/"), v=as.name(col)) )
}
目前这是返回错误'strsplit(〜v,“-”)中的错误:非字符参数'
解决方案
我们可以使用tidyverse
选项而不是base R
与 tidyverse 混合使用。 separate_rows
fromtidyr
拆分列并将其重塑为“长”格式。在函数内部,我们可以使用卷曲运算符 ( {{}}
) 来计算函数的未引用参数
library(dplyr)
library(tidyr)
f1 <- function(data, col) {
data %>%
separate_rows({{col}}, sep="/")
}
f1(df, x)
推荐阅读
- postgresql - 在 postgres 中选择日期时间
- pandas - pandas:第 k 个最大的 idxmax
- java - javax.mail - 强制 IMAP 使用 TLS1.2+ - “收到致命警报:protocol_version”
- xquery - MarkLogic:持久化并重用 Xquery 结果
- ssis - SSIS 目录更改恢复到以前的版本 - 参数和连接管理器
- css - CSS 动画挂起/绊倒
- download - 使用 Ansible 从 Windows 共享下载文件
- excel - IF 上的 Excel 错误,`=IF(TRUE, 1, 2)` 是无效的语法?
- c# - 如何在我的控制器中获得新的 ApiAuthorizationDbContext
- spring-boot - 测试 bootstrap.properties 中的 Spring Boot 2.2.4 未加载包含的 application.properties 配置文件