【问题标题】:head() function failing [closed]head()函数失败[关闭]
【发布时间】:2021-03-28 14:41:48
【问题描述】:

我想使用head() 函数对数据集进行概览,但它不起作用。

> library(haven)
> corona <- read_sav("Corona_FB/Corona_FB/TRR265_CoronaFB_16-12-2020.sav")
> View(corona)
> head(corona)

is.character(subclass) 中的错误: 缺少参数“子类”,没有默认值

> head(corona,n=3)

is.character(subclass) 中的错误: 缺少参数“子类”,没有默认值

【问题讨论】:

  • 不幸的是,如果没有更多信息,我们几乎肯定无法回答这个问题。至少非常class(corona) 是什么?你能发一个minimal reproducible example吗?
  • 您确定没有加载任何其他库吗?在控制台(不带括号)中输入head,查看函数来自哪个命名空间
  • find("head")
  • 我想@JanKislinger 已经找到了答案。尝试在全新的 R 会话中只运行几行代码,看看是否遇到同样的问题。
  • 你可以试试utils::head(corona)

标签: r head r-haven


【解决方案1】:

由于您的对象是一个 tibble(类“tbl_df”“tbl”“data.frame”),这是一个非常广泛使用的对象类,问题可能出在head() 函数/方法上。在 clean R 会话中(即工作区中没有其他对象),仅加载了 haventidyverse 包,这可以正常工作:

library(tidyverse)
library(haven)
dd <- tibble(x=1:5,y=2:6)
head(dd)

大约有 99% 的机会您以某种方式获得了一个奇怪版本的 head 定义(有 1% 的机会您的数据对象 (corona) 很奇怪)。为确保它不是您的数据对象,我们需要一个可重现的示例,即您必须允许我们访问您的数据文件或使用save()dput() 转储的数据对象)。

如果find("head") 返回的不是“package:utils”,那么您确实有一个不同的head() 函数来屏蔽base-R 版本。您可以通过使用utils::head() 而不是head() 来确保您使用的是base-R 版本。如果head() 的奇怪版本在您的全局工作区中(即find("head") 返回“.GlobalEnv”),那么您可能想通过说rm("head") 来摆脱它。

或者,如 cmets 中所建议的,您可以查看您的代码是否在 clean R 会话中工作,即您的工作区中没有加载其他包或定义对象的会话。 (重新启动 R 通常可以,但您需要确保您没有从以前的 R 会话恢复工作区。)

与此同时,如果您想对您的数据集进行“概览”,您也可以尝试summary()str()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-27
    • 2013-12-09
    • 2023-03-10
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2015-03-29
    相关资源
    最近更新 更多