r - 没有适用于 'separate_' 的方法应用于类 "character"的对象

标签 r lapply tidyr

我的环境中有四个数据框,每个数据框的第一列如下所示:

      product.consom.unit.tax.currency.geo.time
1                 6000,4161901,KWH,I_TAX,EUR,AL
2                 6000,4161901,KWH,I_TAX,EUR,AT
3                 6000,4161901,KWH,I_TAX,EUR,BA
4                 6000,4161901,KWH,I_TAX,EUR,BE
5                 6000,4161901,KWH,I_TAX,EUR,BG
6                 6000,4161901,KWH,I_TAX,EUR,CY

我想使用 tidyr separate 将第一列分成多列:

data <- list(c("df1", "df2", "df3", "df4"))
sep <- function(x){
  x <- separate(x, 1, c("prod", "band", "unit", "tax", "currency", "geo"), ",", remove = TRUE)
}
lapply(data, sep)

当我运行 lapply 时,出现以下错误:

Error in UseMethod("separate_") : no applicable method for 'separate_' applied to an object of class "character"

我们将不胜感激任何帮助!

最佳答案

你帖子下的评论已经指出了问题。我提供了一个结合 lapply()list2env() 的解决方案来实现你想要的:

library(tidyr)
data <- list(df1, df2, df3, df4)
names(data) <- paste0("df", 1:4)
list2env(lapply(data, separate, 1, c("prod", "band", "unit", "tax", "currency", "geo"), ","), .GlobalEnv)

(separate() 中的参数remove 默认为TRUE,所以我忽略它。)

工作区中的

df1df4 将被覆盖为分隔的表单。

关于r - 没有适用于 'separate_' 的方法应用于类 "character"的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471123/

相关文章:

r - 如何将一列因子拆分为多列多个因子?

r - 将基本图转换为 grob,保持纵横比

Rstudio 拥有 Excelfile 权限 - XLconnect

r - 如何使用lapply定义多个变量?

r - 使用 lapply 函数的并行版本保留列表名称

r - 将 `unnest_wider()` 递归应用于所有列,直到不再有嵌套的列表列?

减少重复枢轴到单个枢轴

r - 按分位数计算值的总和

r - 使用多个文字定界符在 R 中的数据框中拆分字符串