2017-08-29 48 views
1

我正在学习使用R进行编码,并一直在努力获得一些非常简单的工作。我有一个包含产品价格的数据库,每列代表产品的时间序列。我想在每列上运行时间序列的季节性分解,并将结果按产品名称分隔。在R中的多列上运行季节性分解

当我运行代码下面我得到错误:

错误assign中(糊(J)中,x [j]的)< - (STL(dados_resumo [,x]中,s.window =“周期性“)):找不到函数‘分配< - ’

for (i in 1:3) 
{ 
    x <- (i) 
    for(j in colnames(df)){ 
    assign(paste(j), x[j]) <- (stl(df[,x], s.window="periodic")) 
    } 
} 

回答

0

我不知道你的数据帧是什么样子,所以我必须手动在此一展身手。

首先,assign不是一个函数,这正是错误告诉你的。

for(i in 1:length(df)) 
{ 
    df$stl[i] <- stl(df[,i], s.window = "periodic") 
} 
+0

我想你的解决方案,但现在我得到一个新的错误: 错误:类型'closure'的对象不是子集合 也许错误与我的数据框有关? 我的数据帧的样本: Coentro Rucula TomateComum 2007年1月10.44 7.39 3.30 2007年2月5.75 6.32 3.40 2007年3月6.52 5.86 4.56 4 2007 13.90 6.00 3.06 2007年5月12.25 5.44 2.14 2007年6月7.37 5.22 2.34 – user3408750

+0

没有DF本身就很难看到,在错误上运行谷歌搜索,并且会出现几个SO答案,这些答案会向您显示。在R中,函数也被称为闭包,这是你的问题所在。我会冒险猜测你已经命名了一个变量(也许是你的数据框),这也是一个函数的名字,例如数据。 – Foxhound

0

'assign < - '不是函数,但是,'assign'是; 这是在分配的形式(varname的,varvalue,环境) 用于例如,如果你想分配值“的BigWorld”以varible全球环境 名为x您可以使用

assign(x,"bigworld",envir=.GlobalEnv) 

ENVIR可设置为ENVIR = .GlobalEnv这样即使在深堆栈或调用链中的功能,你可以在全球环境值分配给VAR

方程

x = a 

x <- a 

也可用于分配,但里面的功能,这将不会影响值在全球范围,一旦返回的功能,x被删除