如何使用多个 类 仅提取 object 的 类 之一

How to extract just one of classes of object with multiple classes

假设我有一个名为“a”的小标题。它有三个 类:

class(a)

"tbl_df"     "tbl"        "data.frame"

如何只提取其中一个 类?

a$data.frame

无效。

另一个例子是 haven_labelled object, b 有三个 类:

class(b)
"haven_labelled" "vctrs_vctr"     "double" 

如何只提取 b 的双部分?

class() 产生一个未命名的字符向量,您通常使用数字索引 x[i] 对其进行子集化,例如class(b)[3]获得double".

但是您可以应用字符串匹配,并编写自己的 my_class() 函数,该函数基于 valid class 定义的向量。

valid <- c("data.frame", "double", "character")

my_class <- function(x) {k <- class(x);k[k %in% valid]}

my_class(a)
# [1] "data.frame"

my_class(b)
# [1] "double"

数据:

a <- tibble::as_tibble(data.frame())
b <- haven::labelled()