我有一个数据框,编号为“ m_df”,另一个逻辑数据框为“ pos”。 我将TRUE值的坐标(行和列)保存在另一个数据框(“ true_pos”)中 并希望从m_df中提取与这些坐标对应的数字。 请问这样做的最好方法是什么?
set.seed(123)
m <- matrix(rnorm(3*4), 3, 4)
m
#> [,1] [,2] [,3] [,4]
#> [1,] -0.5604756 0.07050839 0.4609162 -0.4456620
#> [2,] -0.2301775 0.12928774 -1.2650612 1.2240818
#> [3,] 1.5587083 1.71506499 -0.6868529 0.3598138
m_df <- as.data.frame(m)
pos <- (m_df < 0.36 & m_df > 0.0)
pos
#> V1 V2 V3 V4
#> [1,] FALSE TRUE FALSE FALSE
#> [2,] FALSE TRUE FALSE FALSE
#> [3,] FALSE FALSE FALSE TRUE
true_pos <- which(pos==TRUE, arr.ind = TRUE)
true_pos
#> row col
#> [1,] 1 2
#> [2,] 2 2
#> [3,] 3 4
答案 0 :(得分:2)
我们可以仅将矩阵用作行/列索引,以从'data.frame'或matrix
m_df[true_pos]
此外,我们不需要转换为row/col
索引。在这里,
m_df[pos]
足够了