在R中如何知道数据是列表还是data.frame

ivqmmu1c  于 2023-04-18  发布在  其他
关注(0)|答案(1)|浏览(142)

我怎么知道我在R中的数据是一个列表还是一个 Dataframe ?
如果我使用typeof(x),它会说列表,如果我使用class(x),它会说数据。帧?

bnlyeluc

bnlyeluc1#

为了澄清一个可能的误解,考虑到你的问题的标题,data.frame也是一个列表。

is.list(data.frame())   # TRUE

但是,您可以使用inherits()来查看对象是list还是data.frame

inherits(data.frame(), "data.frame")  # TRUE
inherits(list(), "data.frame")        # FALSE
    
inherits(data.frame(), "list")        # FALSE
inherits(list(), "list")              # TRUE

或者,methods::is(),但总是稍微慢一点。

is(data.frame(), "data.frame")  # TRUE
is(list(), "data.frame")        # FALSE

is(data.frame(), "list")        # FALSE
is(list(), "list")              # TRUE

来自?is帮助页面:
虽然inherits是为S3类定义的,但它已经被修改,因此无论是S4还是非S4对象,返回的结果几乎总是等同于is。由于它是用C实现的,所以速度更快。

相关问题