如何循环数据框,如果找到所需的值,则打印列和行名称或索引?

时间:2017-08-03 21:12:04

标签: r

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 个答案:

答案 0 :(得分:2)

这是怎么回事?

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]))
  }
}