我的环境中有四个数据框,每个数据框的第一列如下所示:
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
,所以我忽略它。)
df1
到 df4
将被覆盖为分隔的表单。
关于r - 没有适用于 'separate_' 的方法应用于类 "character"的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58471123/