我有三个数据集,想知道我的计算中使用了多少 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 也适用于多维数组的事实,而不仅仅是矩阵:
我们使用 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 个数据集对其进行测试时,一切顺利!
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]
!!谢谢