Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 没有适用于'的方法;分开的';适用于“类”的对象;“字符”;_R_Lapply_Tidyr - Fatal编程技术网

R 没有适用于'的方法;分开的';适用于“类”的对象;“字符”;

R 没有适用于'的方法;分开的';适用于“类”的对象;“字符”;,r,lapply,tidyr,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,

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

      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)

data一旦我更改了
data你的帖子下面的评论指出了问题所在,你的代码实际上在我的机器上运行过一次。我提供了一个结合
lappy()
list2env()
的解决方案,以实现您的需求:

library(tidyr)

为什么不将其作为csv文件读取?您正在尝试分离字符向量
c(“df1”、“df2”、“df3”、“df4”)
,这是不可能的。您需要一个数据帧列表。@gersht很合适。您应该使用实际数据集名称而不是字符向量,即
df1
而不是
“df1”
。这很有意义,感谢您的澄清!

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)) 
}