r - 没有适用于“单独_”的方法应用于“字符”类的对象
问题描述
我的环境中有四个数据框,每个数据框的第一列如下所示:
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
我收到以下错误:
UseMethod("separate_") 中的错误:没有适用于 'separate_' 的方法应用于“字符”类的对象
任何和所有的帮助将不胜感激!
解决方案
一旦我按照@gersht 和@NelsonGon 的建议更改data <- list(c("df1", "df2", "df3", "df4"))
为,您的代码实际上可以在我的机器上运行一次。data <- list(df1, df2, df3, df4)
您也需要删除c()
。
我也尝试过一种for loop
方法:
df1 <- data.frame(product.consom.unit.tax.currency.geo.time = c(
"6000,4161901,KWH,I_TAX,EUR,AL",
"6000,4161901,KWH,I_TAX,EUR,AT",
"6000,4161901,KWH,I_TAX,EUR,BA",
"6000,4161901,KWH,I_TAX,EUR,BE",
"6000,4161901,KWH,I_TAX,EUR,BG",
"6000,4161901,KWH,I_TAX,EUR,CY"))
df2 <- df3 <- df4 <- df1
data <- list(df1, df2, df3, df4)
library(tidyr)
for (i in 1:4) {
assign(paste0("df", i), separate(data.frame(data[i]), 1, c("prod", "band", "unit", "tax", "currency", "geo"), ",", remove = TRUE))
}
推荐阅读
- android - 带有视图分页器的点击片段
- maven - 在插件中更改 Liquibase 的日志记录级别
- android - 如何有条件地更改 Android 中的文本颜色?
- python - 如何从 Bokeh 的下拉菜单中“选择”字形的元素?
- r - 在大型data.frame中替换多个值的最快方法
- powershell - 试图弄清楚如何使用 robocopy 复制数千个文件
- python - 在 pandas 中的匹配列名上获取相应的行值
- syntax-highlighting - Hugo No-JS 语法高亮与 highlight.js 或 prism.js
- python - Pandas:IndexError:使用 iterrows 时索引超出范围
- c++ - 从 Excel VBA 调用的 C++ DLL 仅适用于 Visual Studio 中的调试实例