R &引用;数据基本上是恒定的;t检验误差

R &引用;数据基本上是恒定的;t检验误差,r,R,这是我的R代码,用于对细菌耐药性的一组数据进行t检验。这给了我错误代码: t.test(antibioticdata$Bacteria, antibioticdata$Inhibition, alternative = c("two.sided"), paired = FALSE, var.equal = FALSE) if(stderr

这是我的R代码,用于对细菌耐药性的一组数据进行t检验。这给了我错误代码:

t.test(antibioticdata$Bacteria,
       antibioticdata$Inhibition, 
       alternative = c("two.sided"),
       paired = FALSE, 
       var.equal = FALSE)
if(stderr<10*.Machine$double.eps*max(abs(mx)、abs(my))停止时出错(“数据基本保持不变”): 缺少需要TRUE/FALSE的值 此外:警告信息: 1:平均值。默认值(x):参数不是数字或逻辑参数:返回NA 2:在var(x)中: 对因子x调用var(x)已被弃用,并将成为一个错误。 使用类似“all(复制的(x)[-1L])”的方法测试常量向量。
不确定我做错了什么,我只是遇到了同样的错误。这可能是因为每组中的所有值都是相同的

所以只要再写两个“如果还有”。对我来说,我做到了

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 var(x) :
  Calling var(x) on a factor x is deprecated and will become an error.
  Use something like 'all(duplicated(x)[-1L])' to test for a constant vector.

能否提供再现此问题的最小输入数据集(最小的复制数据集)?这可能有助于故障排除。我相信这会为正在发生的事情提供线索:
调用因子x上的var(x)
。如果
细菌
抑制
之一是一个因素,则会发生错误和警告。的可能重复请查看可能重复的链接,这可能会回答您的问题。尽管错误消息足够清楚,但请给出一个答案。您是否有意对分类数据使用t检验?由于分类值不是正态分布,甚至没有有意义的均值或方差,因此不清楚您希望通过运行测试发现什么。也许R只是为了保护你不受统计学上的胡说八道的影响。“不确定我做错了什么”的答案可能是“试图对分类数据进行t检验”。
library("greenbrown") 

apply(data.table, 1, function(x){

  if(AllEqual(x[1:9])){return(1)}

  else if(AllEqual(x[1:4]) & AllEqual(x[5:9])){return(0)} else {

  t.test(as.numeric(x[1:4]), as.numeric(x[5:9]))->t.results

  return(t.results$p.value)
  }
})->P.for.data.table