R错误:“变量的类型无效(NULL)”

Posted

技术标签:

【中文标题】R错误:“变量的类型无效(NULL)”【英文标题】:R error: "invalid type (NULL) for variable" 【发布时间】:2018-01-20 05:54:49 【问题描述】:

我目前正在处理问卷中的数据,其中的答案已被添加以查找分数之前和之后的结果,然后减去以查找差异。我正在尝试运行 Mann-Witney U 测试来测试查看不同教育干预后的差异分数之间是否存在差异。数据的排列方式是一列是与第一次教育干预的差异,第二列是与第二次教育干预的差异。当我运行代码时:

wilcox.test(formula=opinion$video~opinion$writtenpiece)

我收到此错误:

model.frame.default 中的错误(公式 = 意见$video ~ opinion$writtenpiece) : 变量的无效类型 (NULL) '意见$视频'

我已经尝试了我能想到的一切以使其正常工作并继续遇到相同的错误。有谁知道我做错了什么?我已经很久没有使用 R 进行数据分析了,而且我从来没有做过这种类型的数据,所以我确定我错过了一些东西。

这就是数据的样子(我不确定为什么我的数字旁边有一个 L...)

输入(意见)

结构(列表(视频= c(11L,12L,10L,10L,9L,9L,13L,13L, 10L, 12L, 12L, 12L, 13L, 11L, 15L, 11L, 15L, 12L, 17L, 12L, 10L, 14L, 13L, 12L, 12L, 10L, 9L, 11L, 11L, 14L, 13L, 14L, 14L, 11L, 12L, 13L, 12L, 13L, 14L, 11L, 10L, 12L, 13L, 15L, 15L, 10L, 11L, 13L, 12L, 11L, 12L, 9L, 10L, 12L, 14L, 10L, 10L, 9L, 11L, 11L, 10L, 9L, 10L, 10L, 16L, 7L, 9L, 10L, 10L, 16L, 13L, 11L, 10L, 6L, 11L, 10L, 13L, 10L, 13L, 12L, 10L, 15L, 0L, 0L, 0L, 0L, 0L, 0L), 书面件 = c(10L, 11L, 10L, 10L, 10L, 7L, 10L, 9L, 13L, 13L, 12L, 8L, 13L, 12L, 15L, 10L, 9L, 11L, 10L, 11L, 13L, 10L, 12L, 11L, 11L, 11L, 10L, 15L, 10L, 13L, 14L, 11L, 11L, 12L, 9L, 15L, 11L, 14L, 11L, 12L, 12L, 14L, 10L, 10L, 10L, 9L, 13L, 13L, 10L, 9L, 9L, 13L, 8L, 13L, 14L, 9L, 12L, 11L, 11L, 12L, 10L, 13L, 16L, 12L, 10L, 8L, 13L, 16L, 17L, 12L, 11L, 13L, 11L, 11L, 9L, 10L, 12L, 12L, 10L, 14L, 12L, 11L, 12L, 11L, 12L, 10L, 10L, 12L)), .Names = c("Video", "Written.Piece"), class= "data.frame", row.names = c(NA, -88L))

【问题讨论】:

R 告诉你该变量不存在。 罗兰怎么会有一个存在而一个不存在?正如它总是说的那样,它是用于视频的。视频的分数比书面的要少,但我什至尝试输入代码来忽略 NA。 【参考方案1】:

您用来运行wilcox.test 的命令似乎没有正确引用您的数据。具体来说,从您的 dput 看来,VideoWritten.Piece 变量是大写的。尝试运行此代码:

melt.opinion <- melt(opinion, 
                       id.vars = c(), 
                       measure.vars = c("Video", "Written.Piece"), 
                       variable.name = "intervention.type", 
                       value.name = "difference.value")
wilcox.test(formula = 
              melt.opinion$difference.value ~ melt.opinion$intervention.type) 

【讨论】:

谢谢!我自己刚刚注意到并修复了它,但后来我收到了这个错误: wilcox.test.formula 中的错误(formula = opinion$Video ~ opinion$Written, : grouping factor must have exactly 2 levels I added all the scores to one列并添加了第二列,称为干预,视频分数为 1,书面分数为 2。我终于得到了输出,但我不确定这是对该测试的准确使用,或者它是否真的在测试我想要的? 这不是一个准确的测试,因为我也使用了同理心分数并且得到了完全相同的 p 值,所以我做了一个 Kruskal Wallis 测试。这是一个准确的测试吗? 我的统计数据有点不稳定,但在阅读一些***页面时,似乎 wilcox 测试应该有效,因为您的样本只查看两个级别。如果我不得不猜测(如果 wilcox.test 像 R 的 lmglm 等一样工作),您应该使用 melt 命令重新格式化您的数据。出于格式原因,我将编辑我的回复/答案。 感谢您的帮助!恐怕我尝试了您建议的融化功能,并从我所做的原始帖子中得到了关于“NULL”的相同错误。我假设那是由于我犯了另一个错误,但恐怕我看不到它。我想不通的是,当它只有两个级别时,为什么它会运行 Kruskal Wallis 测试而不是 Mann-Witney。 我刚刚尝试使用我发送给您的代码,它可以很好地运行 Mann-Witney 测试。你的软件是最新的吗?您可能需要使用“不错”的格式,因此请尝试: melt.opinion

以上是关于R错误:“变量的类型无效(NULL)”的主要内容,如果未能解决你的问题,请参考以下文章

R.id 给出错误“无法解析符号'R'”[重复]

Android项目开始时的R错误[重复]

cygwin $'\r': 找不到命令错误

R:tkplot在R中给出错误

R:knnImputation 给出错误

R XML 包中的 htmlParse() 段错误错误:“内存未映射”