【发布时间】:2014-09-19 13:54:13
【问题描述】:
我有一个数据框,df = (Var1,Day,Month,Years)。我需要对每年的数据进行显着性检验。但是需要传递给函数的参数(在这种情况下是显着性测试)在另一个数据框中。我使用以下代码,但没有得到正确的结果。 [其中 param1 和 param2 是带有每年参数的向量]
for (i in (no.of.years))
{
result_stat <- aggregate(Var1~YY,df,function(X)ks.test(X,'pgamma',shape = param1[i], rate = param2[i]))
}
能否请您告诉我我的 for 循环有什么问题?当相同的步骤在没有循环的情况下单独执行时[即,手动获取每年的数据并通过硬编码参数 param1 和 param2] 我得到一组不同的结果。
【问题讨论】:
-
首先,你需要使用
[来访问向量元素,所以将param1(i)修改为param1[i](param2也一样)。同样result_stat在每次迭代中都会被覆盖,您需要将其定义为一个列表,然后将每次迭代的结果分配给result_stat[[i]]。要获得更多帮助,请提供信息以便您的问题可以重现,并提供有关您遇到的错误的更多详细信息。 -
第一个是错字。我没有收到任何错误,但我得到了不正确的测试统计信息。我认为问题是函数内的“i”,而函数内又是聚合。
-
我认为
i不会有问题,它应该可以很好地传递给函数。问题的另一个猜测可能是您只想对包含特定年份的数据子集使用聚合,但您在所有年份都这样做?aggregate中的Var1和YY到底是什么,你有附加数据框吗? -
Var1 为每日降雨量数据。 YY是年。我有 50 年的数据,并希望使用特定参数运行每年的拟合优度(ks.test)。我在另一个向量中拥有这些参数 50 年。
-
我只需要for循环来增加param1和param2中'i'的值。但是聚合函数似乎在一次迭代中运行该函数(多年来)。
标签: r for-loop aggregate-functions