【发布时间】:2016-11-23 17:17:05
【问题描述】:
我想对矩阵中的每一行进行 t 检验。矩阵如下所示:
data <-
structure(c(NA, NA, 216750, 440450, NA, NA, 597510, 1839055,
851820, 1210200, NA, NA, NA, NA, 486720, 602970, 333150, 346532,
NA, NA, 421290, 425660, NA, 375440), .Dim = c(6L, 4L), .Dimnames = list(
c("Gregg", "Mark", "Donnie",
"Fred", "Tim", "Gracie"
), c("AUC_Rep1", "AUC_Rep2", "AUC_Rep3", "AUC_Rep4")))
如您所见,数据存在两个问题。第一个是它包含NAs,第二个是在某些行中没有足够的数据——整行只有一个值。
你知道有什么方法可以避免这个问题吗?我想创建一个首先忽略NAs 的函数,如果行中只有一个值,它应该将NA 作为t 检验的输出。
我通常使用 pi0 包中的函数 - matrix.t.test
【问题讨论】:
-
如果您的数据是
data.frame,这可能有效:apply(dat,1,function(x) ifelse(sum(is.na(x))%in%c(length(x),length(x)-1),"NA",t.test(x,na.rm=TRUE))) -
没有解决问题。给出错误
Error in ifelse(sum(is.na(x)) %in% c(length(x), length(x) - 1), "NA", : error in evaluating the argument 'no' in selecting a method for function 'ifelse': Error in t.test.default(x, na.rm = TRUE) : not enough 'x' observations -
以你的例子为我工作。实际数据是否会出现错误?
-
它也不适用于我的示例数据。出现的第一个错误是
Called from: t.test.default(x, na.rm = TRUE),当我按下继续时,它给出了前面评论中提到的错误。
标签: r statistics na hypothesis-test rowwise