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.frame
s 相同,除了 data.frame
s 尝试 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.frame
或 tibble
:
完全相同
df$Measurement[index]
# [1] 2756 2756 2536 2796
df_tib$Measurement[index]
# [1] 2756 2756 2536 2796
专门用于从小标题中获取列,您可以使用 pull()
:
tb %>% pull(2)
tb %>% pull(Measurement)
我目前正在像这样子化我的数据框列 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.frame
s 相同,除了 data.frame
s 尝试 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.frame
或 tibble
:
df$Measurement[index]
# [1] 2756 2756 2536 2796
df_tib$Measurement[index]
# [1] 2756 2756 2536 2796
专门用于从小标题中获取列,您可以使用 pull()
:
tb %>% pull(2)
tb %>% pull(Measurement)