我有三個數據集,想知道我的計算中使用了多少N.如何計算三個數據集之間的組合總數?
我將數據讀取到具有維數(nx,ny,ntsteps,ndatasets)的多維數組中,例如,以較小的例如數據集:
# nx ny nsteps ndatasets
dat = runif(20 * 30 * 100 * 3)
dim(dat) = c(20, 30, 100, 3)
> str(dat)
num [1:20, 1:30, 1:100, 1:3] 0.1834 0.8537 0.0672 0.0734 0.8078 ...
我們利用的cor
功能和建設這個函數來計算我們有多少N具有:
cor_withN <- function(...) {
res <- try(cor.test(...)$parameter+2, silent=TRUE)
ifelse(class(res)=="try-error", NA, res)}
現在我們利用一個事實,即應用也適用在多維數組上,不僅包含矩陣:
我們使用apply來遍歷所有的x,y,z三元組。
result = apply(dat, c(1,2), function(x) cor_withN(x[,1], x[,2],x[,3]))
> str(cor_result)
logi [1:20, 1:30] NA NA NA NA NA NA ..
所以什麼是錯的通過得到NA NA NA NA 如果最後一行順利!然後
str(cor_result)
應該
logi [1:20, 1:30] 100 100 100 100 100 ..(nsteps)
爲什麼我收到NA或有另一種方式做到這一點任何想法?
當我用2個datas進行測試時,它進行得很順利!
cor_result = apply(dat, c(1,2), function(x) cor_withN(x[,1], x[,2]))
> str(cor_result)
num [1:20, 1:30] 100 100 100 100 100 100 100 100 100 100
所以問題是當我加入x[,3]
! 感謝
對不起,但是據我所知,cor.test有兩個參數,但是你傳遞了三個參數。這應該如何工作? – January
我在嘗試,但我不確定我們是否可以使其工作。有沒有其他方法來計算三個參數的三個像cor.test的N! – sacvf
我不確定你的意思是「N三元組」。組合總數?有比計算相關係數更簡單的方法。 – January