2017-08-03 21 views
0
m = matrix(runif(100), ncol=10) 
rownames(m) = LETTERS[1:10] 
colnames(m) = rownames(m) 
m 

我得到一个矩阵,所以我想通过每个行和列循环,我想第一个元素在我行的比较都存在于塔内如何循环访问数据框,如果找到所需值然后打印列和行名称或索引?

A   B   C   D   E   F   G `                  
A 0.2059746 0.93470523 0.4820801 0.8209463 0.47761962 0.91287592 0.3390729 
B 0.1765568 0.21214252 0.5995658 0.6470602 0.86120948 0.29360337 0.8394404 

所以我想要的元素多数民众赞成比较第一行是A到A,B,C,d,E,F,F检查所需的值,如果它存在,然后打印索引或行和列名..

which(m >0.8, arr.ind=TRUE) 

我这样做,但我想用for循环来做

任何帮助或建议将不胜感激

回答

1

这是怎么回事?

for (i in 1:nrow(m)) { 
    findrows <- which(m[i, ] > 0.8) 
    if (length(findrows) > 0) { 
    print(rownames(m[i, , drop = FALSE])) 
    } 
} 

同时打印列,只需添加一个额外的行:

for (i in 1:nrow(m)) { 
    findrows <- which(m[i, ] > 0.8) 
    if (length(findrows) > 0) { 
    message("rows:") 
    print(rownames(m[i, , drop = FALSE])) 
    message("columns:") 
    print(colnames(m[, findrows, drop = FALSE])) 
    } 
} 
+0

它打印rownames但我希望得到我的意思是他们两人的colnames如果一起使用的条件得到满足 –

+1

@krushnachChandra看我的编辑。 –

+0

以及我的R技巧是相当原始的..但我很高兴你更新了答案 –

相关问题