是否有可能在 R 中获取未选择的数据帧行的索引?

Is that possible to get the index of unselected rows of data frame in R?

在 R 中使用 sample() 时,我需要未选中行的索引。请考虑以下情况。

df <- data.frame(id = c(1,1,2,2,3,3),
                 v1 = c(2,2,9,4,7,1),
                 v2 = c(3,5,8,5,8,5))
ss  <- ceiling(0.5*nrow(df)) #size
set.seed(123)
rid <- sample(seq_len(nrow(df)),size=ss,replace=F)

现在,3,6,2 行是随机选择的。有没有办法知道未选中行的索引 (1,4,5)?

谢谢!

您可以使用 df[-rid,]:

df <- data.frame(
  id = c(1, 1, 2, 2, 3, 3),
  v1 = c(2, 2, 9, 4, 7, 1),
  v2 = c(3, 5, 8, 5, 8, 5)
)
ss <- ceiling(0.5 * nrow(df)) # size
set.seed(123)
rid <- sample(seq_len(nrow(df)), size = ss, replace = F)

rid
#> [1] 3 6 2
df
#>   id v1 v2
#> 1  1  2  3
#> 2  1  2  5
#> 3  2  9  8
#> 4  2  4  5
#> 5  3  7  8
#> 6  3  1  5

df[rid,]
#>   id v1 v2
#> 3  2  9  8
#> 6  3  1  5
#> 2  1  2  5
df[-rid, ]
#>   id v1 v2
#> 1  1  2  3
#> 4  2  4  5
#> 5  3  7  8
rownames(df[-rid, ])
#> [1] "1" "4" "5"

reprex package (v2.0.1)

于 2021-11-05 创建