我使用导入的制表符分隔数据文件中的数据时遇到问题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
Run Code Online (Sandbox Code Playgroud)
我注意到这只发生在由不同级别组成的向量中.它甚至不会对矢量[1] +矢量[2]执行简单的数值运算.但是没有关卡的矢量工作正常.
如何使用水平向量中的数据进行计算?
谢谢
我已经能够使用以下小例子重现您的错误消息:
x = as.factor(1:5)
y = as.factor(1:5)
t.test(x, y)
Run Code Online (Sandbox Code Playgroud)
产量
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
Run Code Online (Sandbox Code Playgroud)
问题是您正在尝试对非数字向量执行t检验.同样没有为因素定义:
x + y
Run Code Online (Sandbox Code Playgroud)
产量
[1] NA NA NA NA NA
Warning message:
In Ops.factor(x, y) : + not meaningful for factors
Run Code Online (Sandbox Code Playgroud)
该警告提供了对什么是错误的敏锐洞察力,并解释了为什么你的t检验不起作用.
要解决这个问题,你需要像ilya建议的那样:将你的矢量转换为数字 as.numeric(as.character())