我目前正在对我的数据框列进行子集化,如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的tibble,这是有意义的,因为有50行和1列。但是,我不知道如何处理这些问题。根据我的理解,我不能像列表或矢量那样索引它。索引是否容易索引,如果是,如何?如果没有,我将如何将其转换为列表/向量?只是为了让你知道我想做什么,让我们说我要索引第8,15,23和47个测量值,我希望最终输出理想地是一个矢量或其他东西这很容易使用。
答案 0 :(得分:1)
索引tibble
与索引data.frame
相同,但data.frame
s尝试返回最低维度的事实除外,因此存在以下差异:
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
答案 1 :(得分:0)
专门用于从小标题中获取列,可以使用pull()
:
tb %>% pull(2)
tb %>% pull(Measurement)