我是python和R的新用户。我已经开始使用它们来尝试回答我所拥有的科学问题。我想要做的是以下几点:
这将使用大约1000行和20列的矩阵来完成。
我很感激任何指导,因为我只是在学习。谢谢!
答案 0 :(得分:0)
您可以尝试R
:
meanSDs <- apply(m1, 2, function(x) c(mean(x)+3*sd(x), mean(x)-3*sd(x)))
any(m1 > meanSDs[1,][col(m1)] | m1 < meanSDs[2,][col(m1)])
#[1] TRUE
创建一个功能
fun1 <- function(mat,n){
repeat{
meanSDs <- apply(mat, 2, function(x)
c(mean(x)+n*sd(x), mean(x)-n*sd(x)))
indx <-mat > meanSDs[1,][col(mat)] | mat < meanSDs[2,][col(mat)]
indx1 <- !rowSums(indx)
mat <- mat[indx1,]
if(all(indx1)) break
}
return(mat)
}
m2 <- fun1(m1,3)
检查结果
meanSDs <- apply(m2, 2, function(x) c(mean(x)+3*sd(x), mean(x)-3*sd(x)))
any(m2 > meanSDs[1,][col(m2)] | m2 < meanSDs[2,][col(m2)])
#[1] FALSE
set.seed(79)
m1 <- matrix(rnorm(1000*20,1,8), ncol=20)