首页 > 解决方案 > 如何仅提取具有多个类的对象类之一

问题描述

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

class(a)

"tbl_df"     "tbl"        "data.frame"

如何仅提取其中一个类?

a$data.frame

不起作用。

另一个例子是一个haven_labelled对象,b它有三个类:

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

我怎样才能只提取的双部分b

标签: rclasstidyversetibbler-haven

解决方案


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

但是,您可以应用字符串匹配,并编写一个my_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()

推荐阅读