如何使用存储在另一个数据帧中的行和列索引对数据帧进行子集化?

时间:2020-04-30 18:28:26

标签: r dataframe

我有一个数据框,编号为“ 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

1 个答案:

答案 0 :(得分:2)

我们可以仅将矩阵用作行/列索引,以从'data.frame'或matrix

中提取元素
m_df[true_pos]

此外,我们不需要转换为row/col索引。在这里,

m_df[pos]

足够了