【发布时间】:2022-01-05 09:31:02
【问题描述】:
在 RI 中需要有第一个和第二个值的平均值,然后是第一个和第三个值,等等......然后是第二个和第一个值的平均值,所以它达到 96,因为那是多少个值我的文件有(总共,我需要 9216 个这样的平均值)最好以自动化方式进行,例如在一个循环中
【问题讨论】:
在 RI 中需要有第一个和第二个值的平均值,然后是第一个和第三个值,等等......然后是第二个和第一个值的平均值,所以它达到 96,因为那是多少个值我的文件有(总共,我需要 9216 个这样的平均值)最好以自动化方式进行,例如在一个循环中
【问题讨论】:
您应该始终提供可重现的数据,例如:
set.seed(42)
N <- 96
X <- round(runif(N, 1000, 9999))
str(X)
# num [1:96] 9232 9433 3575 8473 6775 ...
现在你想要所有可能对的平均值:
pairs <- expand.grid(seq(N), seq(N))
str(pairs)
# 'data.frame': 9216 obs. of 2 variables:
# $ Var1: int 1 2 3 4 5 6 7 8 9 10 ...
# $ Var2: int 1 1 1 1 1 1 1 1 1 1 ...
# - attr(*, "out.attrs")=List of 2
# ..$ dim : int [1:2] 96 96
# ..$ dimnames:List of 2
# .. ..$ Var1: chr [1:96] "Var1= 1" "Var1= 2" "Var1= 3" "Var1= 4" ...
# .. ..$ Var2: chr [1:96] "Var2= 1" "Var2= 2" "Var2= 3" "Var2= 4" ...
现在计算均值:
X.mn <- apply(pairs, 1, function(x) mean(c(X[x[1]], X[x[2]])))
str(X.mn)
# num [1:9216] 9232 9332 6404 8852 8004 ...
summary(X.mn)
# Min. 1st Qu. Median Mean 3rd Qu. Max.
# 1002 4349 5707 5709 7154 9899
一旦您知道如何使用矢量化,通常就可以消除循环的需要。
【讨论】:
您能否至少提供您指定的示例中的示例输出?在描述中使用 etc... 来跟踪您的 word 问题很难。
【讨论】: