如何将长嵌套for循环的结果匹配并存储到R中数据帧的空列中

如何将长嵌套for循环的结果匹配并存储到R中数据帧的空列中,r,loops,dataframe,p-value,R,Loops,Dataframe,P Value,我试图将长嵌套for循环中的p值存储到数据帧中的空列中。我曾尝试查找接近我的代码的示例,但我觉得我的代码非常长(甚至可能不正确),可以应用于其他for循环的相同内容不能应用于我的 我试图做的是,通过找到一个p值,将观察到的成对鸟类的相关性与给定年份所有可能成对鸟类的相关性进行比较。为此,我编写了一个for循环,在这个循环中,我从一个巨大的数据集中选择了一系列的年份,然后我将一系列函数应用到给定的年份中,在这些年份中,我试图缩小观察到的成对数据的范围,然后我添加了一列相关度,并从另一个数据集中转移

我试图将长嵌套for循环中的p值存储到数据帧中的空列中。我曾尝试查找接近我的代码的示例,但我觉得我的代码非常长(甚至可能不正确),可以应用于其他for循环的相同内容不能应用于我的

我试图做的是,通过找到一个p值,将观察到的成对鸟类的相关性与给定年份所有可能成对鸟类的相关性进行比较。为此,我编写了一个for循环,在这个循环中,我从一个巨大的数据集中选择了一系列的年份,然后我将一系列函数应用到给定的年份中,在这些年份中,我试图缩小观察到的成对数据的范围,然后我添加了一列相关度,并从另一个数据集中转移成对数据的相关度值。然后,我在这个函数中应用另一个for循环函数,以创建一个数据帧,其中包含给定年份中所有可能的成对鸟类,并为这些鸟类添加和传输一列相关值。从这两个数据帧中的配对和每年的相关性,我想应用wilcox检验来找出每个给定年份的p值。我想将这些p值转换到一个单独的数据框中,我已经创建了一个年份列和一个p值列

以下是我的(看起来很疯狂)代码:


`year如果您只是想保存p值:

str(wilcox.test(rnorm(10), rnorm(10, 2))) # example from running ?Wilcox.test
wilcox.test(rnorm(10), rnorm(10, 2))$p.value # 
因此,对于您的数据集,也许可以将其放在for循环的底部:

pvalue[j] <- wilcox.test(allbr_demo_noEPP_year_geno_obs$relatedness, 
                         all_poss_df_geno$relatedness, alternative='greater')$p.value 

pvalue[j]您是否介意发布数据集的一部分,以便可以运行您的代码?在数据子集上使用dput将为您提供可编辑为原始问题的输出。也许是dput(allbr_demo_noEPP[1:30,])?嗨,埃文,我不确定我是否应该,因为数据不是我的。我在处理别人的研究数据,所以决定公开分享不是我的事。谢谢你的帮助!也许我应该删除我的问题,因为没有数据集可能很难提供帮助。是的,我们通常不建议共享私人研究数据——我们通常建议从头开始创建一个具有预期输出的样本。但是,我看了一眼,告诉我您是否还需要其他内容,因为在我看来,您只是想从for循环结果中捕获数据帧中的pvalue?如果没有某种数据,很难回答这个问题。但是,一般来说,使用提供重塑和整理数据功能的包(例如
dplyr
tidyr
)来操作数据帧比使用复杂的循环要好。@Evan Friedland,是的,我想捕获pvalues以查看是否得到任何有意义的输出。我尝试了你的建议,除了我把results[j]放在pvalue[j]上,因为我认为它应该与数据帧相同,但是它返回了一个错误,说“error in
[
pvalue[j] <- wilcox.test(allbr_demo_noEPP_year_geno_obs$relatedness, 
                         all_poss_df_geno$relatedness, alternative='greater')$p.value