首页 > 解决方案 > 在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,“-”)中的错误:非字符参数'

标签: rtidyverse

解决方案


我们可以使用tidyverse选项而不是base R与 tidyverse 混合使用。 separate_rowsfromtidyr拆分列并将其重塑为“长”格式。在函数内部,我们可以使用卷曲运算符 ( {{}}) 来计算函数的未引用参数

library(dplyr)
library(tidyr)
f1 <- function(data, col) {
           data %>%
                separate_rows({{col}}, sep="/")
   }

f1(df, x)

推荐阅读