我知道有很多关于如何避免R循环的主题,但我无法理解如何对迭代进行矢量化.我有一个数据集,在这里我用m表示.我想生成一个具有此函数的新矩阵,它将由数据的每列(m)的相关系数的p值组成.
m<-matrix(rnorm(100),nrow=10,ncol=10)
sig.p<-function(x){
n= ncol(x)
p.values<-numeric(n)
p.values<-matrix(nrow=n,ncol=n)
for (i in 1:C){
for (t in 1:C){
p.values[t,i]<-cor.test(x[,i],x[,t])$p.value
}
}
p.values
}
sig.p(m)
Run Code Online (Sandbox Code Playgroud)
我无法理解如何使用mapply(如果是这种情况).任何人都可以帮助我建议如何矢量化这些迭代(使用mapply或其他)提前谢谢!
塞萨尔
我有一个具有多个因素和多个数值变量的数据框。我想瓦解其中一个因素(平均而言)。
在我的尝试中,我只能想到嵌套的sapply或for循环以隔离要求平均值的数值元素。
var <- data.frame(A = c(rep('a',8),rep('b',8)), B =
c(rep(c(rep('c',2),rep('d',2)),4)), C = c(rep(c('e','f'),8)),
D = rnorm(16), E = rnorm(16))
> var
A B C D E
1 a c e 1.1601720731 -0.57092435
2 a c f -0.0120178626 1.05003748
3 a d e 0.5311032778 1.67867806
4 a d f -0.3399901000 0.01459940
5 a c e -0.2887561691 -0.03847519
6 a c f 0.0004299922 -0.36695879
7 a d e 0.8124655890 0.05444033
8 a d f -0.3777058654 1.34074427
9 b c e 0.7380720821 0.37708543 …Run Code Online (Sandbox Code Playgroud)