我有一个大型的dataframe (1000x1000),我想在子集中找到所有的最大值。
mat = diag(10-abs(-10:10)) # test matrix
我试图在接下来的3个步骤中使用for
循环,但是它没有工作:
代码
for (x in (1+2):(nrow(mat)-2)){
for (y in (1+2):(ncol(mat)-2)){
subset = mat[x:(x+2), y:(y+2)]
wm = which.max(subset)
mat[row(subset)[wm], col(subset)[wm]] == 1
}}
如有任何意见或更正,欢迎:
发布于 2018-06-07 06:17:59
也许是这样的:
set.seed(123)
m<-matrix(rnorm(100),ncol=10)
m.max<- matrix(0, ncol=ncol(m), nrow=nrow(m))
for(i in 2:(nrow(m)-1)){
for(j in 2:(ncol(m)-1)){
subset<-m[(i-1):(i+1),(j-1):(j+1)]
idx <-which(subset == max(subset), arr.ind = TRUE)
m.max[(i+idx[1]-2),(j+idx[2]-2)]<-1
}
}
m.max
请注意,在每个步骤中不一定会产生新的"1“,因为最大的两个重叠子集可以是相同的条目。
https://stackoverflow.com/questions/50742287
复制相似问题