我在使用从制表符分隔的数据文件导入的数据时遇到问题read.delim
.
大多数列都包含我需要执行的数字数据t.test
为了。不幸的是我总是收到这个错误:
Error in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my)))
stop("data are essentiallyconstant") :
missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In mean.default(x) : argument is not numeric or logical: returning NA
2: In mean.default(y) : argument is not numeric or logical: returning NA
我注意到这只发生在由不同级别组成的向量上。
它甚至不会执行简单的数值运算,例如对于分级向量的向量[1] +向量[2]。
不过,没有水平的向量工作得很好。
如何使用分级向量中的数据进行计算?
谢谢
我已经能够通过以下小示例重现您的错误消息:
x = as.factor(1:5)
y = as.factor(1:5)
t.test(x, y)
yields
Error in if (stderr < 10 * .Machine$double.eps * max(abs(mx), abs(my))) stop("data are essentially constant") :
missing value where TRUE/FALSE needed
In addition: Warning messages:
1: In mean.default(x) : argument is not numeric or logical: returning NA
2: In mean.default(y) : argument is not numeric or logical: returning NA
问题是您正在尝试对非数字向量执行 t 检验。同样,加法也没有定义因子:
x + y
yields
[1] NA NA NA NA NA
Warning message:
In Ops.factor(x, y) : + not meaningful for factors
该警告提供了关于问题所在的敏锐见解,并解释了为什么您的 t 检验不起作用。
要解决这个问题,您需要按照 ilya 的建议进行操作:将向量转换为数字as.numeric(as.character())
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)