Может быть, попробуйте это, сначала я сделаю пример dfx и dfy с некоторыми пропущенными значениями:
set.seed(100)
M = matrix(rnorm(352*53),ncol=53)
#make some NAs
M[sample(length(M),500)] = NA
dfy = M[,1]
dfx = M[,-1]
Вы используете apply для итерации по столбцам, и вы берете только те, которые не являются NA в этом столбце и у:
res = apply(dfx,2,function(i){
compl = !is.na(i) & !is.na(dfy)
unlist(cor.test(i[compl],dfy[compl],method="spearman")[c("estimate","p.value")])
})
res = t(res)
head(res)
estimate.rho p.value
[1,] -0.03147103 0.5675366
[2,] -0.06137428 0.2596360
[3,] -0.06224493 0.2536336
[4,] -0.02586685 0.6354243
[5,] 0.06105610 0.2642532