如何解决R:错误-rep.intc1,numericn,n-1L错误:无效的“时间”值
我已经仔细研究了类似错误的响应,但似乎找不到适合我的解决方案。我正在尝试为相对较小的数据集(nrow = 378)设置回归的一些对比,并且在尝试创建对比时出现标题错误。我正在运行的命令是:
d$contrasts <- varContrasts(d$Media.Type,Type = 'Dummy',RefLevel = 4)
有人知道这里发生了什么吗?相同的代码对我来说适用于不同的数据集。
编辑:为回应Paul的评论,这是dput(d $ Media.Type)的输出
dput(d$Media.Type)
c("2","3","4","2","1","1")
解决方法
varContrasts
需要一个factor
,但您的数据是character
。只需将其转换为factor
。
lmSupport::varContrasts(
as.factor(x),Type = 'Dummy',RefLevel = 4
)
#> 1_v_4 2_v_4 3_v_4
#> 1 1 0 0
#> 2 0 1 0
#> 3 0 0 1
#> 4 0 0 0
以下不是造成您问题的原因,但此错误最常见的情况是在存在“ NA”的情况下。
这是一个没有错误的示例。
x <- factor(1:5)
lmSupport::varContrasts(x,RefLevel = 4)
#> 1_v_4 2_v_4 3_v_4 5_v_4
#> 1 1 0 0 0
#> 2 0 1 0 0
#> 3 0 0 1 0
#> 4 0 0 0 0
#> 5 0 0 0 1
#> 1_v_4 2_v_4 3_v_4 5_v_4
#> 1 1 0 0 0
#> 2 0 1 0 0
#> 3 0 0 1 0
#> 4 0 0 0 0
#> 5 0 0 0 1
但是如果有NA
,我们会收到错误消息。
x2 <- c(x,NA)
lmSupport::varContrasts(x2,RefLevel = 4)
#> Error in rep.int(c(1,numeric(n)),n - 1L) : invalid 'times' value
这些需要以某种方式处理。例如,创建一个新级别Missing
。
x3 <- as.factor(tidyr::replace_na(x2,"Missing"))
#> lmSupport::varContrasts(x3,RefLevel = 4)
#> 1_v_4 2_v_4 3_v_4 5_v_4 Missing_v_4
#> 1 1 0 0 0 0
#> 2 0 1 0 0 0
#> 3 0 0 1 0 0
#> 4 0 0 0 0 0
#> 5 0 0 0 1 0
#> Missing 0 0 0 0 1
#> 1_v_4 2_v_4 3_v_4 5_v_4 Missing_v_4
#> 1 1 0 0 0 0
#> 2 0 1 0 0 0
#> 3 0 0 1 0 0
#> 4 0 0 0 0 0
#> 5 0 0 0 1 0
#> Missing 0 0 0 0 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。