R 中 subsetting/indexing dataframe 列时如何处理 tibbles?

How to deal with tibbles when subsetting/indexing dataframe column in R?

我目前正在像这样子化我的数据框列 df_subset <- df[,c(2)]

       Measurement
       ------------
1        2752
2        2756
3        2756
4        2740
5        2724
6        2536
7        2796
8        2800

输出显示这是一个 50 x 1 的小标题,这是有道理的,因为有 50 行和 1 列。但是,我不确定如何处理 tibbles。据我了解,我无法像列表或向量那样对它进行索引。索引 tibble 是否容易,如果是的话如何?如果不是,我如何将其转换为 list/vector 呢?只是为了让您了解我想做什么,假设我想索引第 8、15、23 和 47 个测量值,并且我希望最终输出理想情况下是矢量或其他易于一起工作。

索引 tibble 与索引 data.frames 相同,除了 data.frames 尝试 return 尽可能低的维度,因此如下差异:

library(tibble)
df = data.frame(Measurement = c(2752,2756,2756,2740,2724,2536,2796,2800))
df_tib = as.tibble(df)

index = c(2,3,6,7)

索引数据帧:

df[index,]
# [1] 2756 2756 2536 2796

df_tib[index,]
# A tibble: 4 x 1
#   Measurement
#         <dbl>
# 1        2756
# 2        2756
# 3        2536
# 4        2796

请注意,df[index,] 在索引后被强制转换为向量,因为 data.frame 看到它是一个只有一列的数据帧。 tibble 不进行这种强制转换。要覆盖此 属性,您可以使用 drop=FALSE:

df[index,, drop=FALSE]
#   Measurement
# 2        2756
# 3        2756
# 6        2536
# 7        2796

要在索引后得到一个向量,你实际上想索引 Measurement。这与 data.frametibble:

完全相同
df$Measurement[index]
# [1] 2756 2756 2536 2796

df_tib$Measurement[index]
# [1] 2756 2756 2536 2796

专门用于从小标题中获取列,您可以使用 pull():

tb %>% pull(2)
tb %>% pull(Measurement)