R 使用t.test时出错-不足';x';观察

R 使用t.test时出错-不足';x';观察,r,p-value,R,P Value,我有测量甲基化的数据 数据:data.frame,900观察值x70患者[30 ctrl,40 case],所有值均为numeric,无NAs 我使用以下代码: group <- function(dFrame,toMatch) { matches <- unique (grep(paste(toMatch,collapse="|"), colnames(dFrame), value=TRUE)) return(dFrame[ma

我有测量甲基化的数据

数据:
data.frame
900
观察值
x70
患者[30 ctrl,40 case],所有值均为
numeric
,无
NA
s

我使用以下代码:

group <- function(dFrame,toMatch)
{
  matches <- unique (grep(paste(toMatch,collapse="|"), 
                      colnames(dFrame), value=TRUE))
  return(dFrame[matches])
}

pValue <- sapply(methySample, function(x) t.test( group (x,'case'),group (x,'ctrl'))$p.value)


Error in t.test.default(group (x, "case"), group (x, "ctrl")) : 
  not enough 'x' observations 
也许这里有人能帮我找出哪里出了问题——也许我错过了一些显而易见的东西。我已经看到其他帖子考虑了这个错误消息,但答案是“你的数据中有NAs吗?”“哦,是的!”-这不适用于我的问题。。
谢谢大家!

我想做一个假设,你想对data.frame中的每一行应用t检验,字段标记为'case1','control1',等等

methySample  <-  
    data.frame(case1=rnorm(10),
               case2=rnorm(10),
               control1=rnorm(10),
               control2=rnorm(10))

# identify the fields that are labeled 'case' and 'control'
caseFields <- grep('case',colnames(methySample), value=TRUE)
controlFields <- grep('control',colnames(methySample), value=TRUE)

# apply the t-test for each row (margin = 1)
apply(methySample,
      1,
      function(x)
          t.test(x[caseFields],
                 x[controlFields])$p.value)

methySample是
methySample
数据帧吗?是:>class(methySample)[1]“data.frame”然后sapply将提供的函数应用于methySample的每一列,我怀疑这不是您想要的。甲基化样本的每一列都是来自特定个体(病例或对照组)的数据,而每一行都是单个甲基化位点的观察结果吗?你能提供一些关于
methySample
结构的更多信息吗,比如
head(methySample)
str(methySample)
?另外,你的目标是对70名患者中的每一位进行t检验(p值)?观察是针对不同的甲基化位点进行的-我想寻找ctrl和病例组之间的“显著”差异。我希望pValue是一个向量[抱歉,我将在问题中相应地编辑它],这与我将要写的代码几乎完全相同。我的速度太慢了。是的,这就是我想要的,它适用于您的示例-尽管我的数据中仍然有
没有足够的“x”观察值。然而,这是正确的答案,只要我修复数据,我猜!谢谢两位:)问题是我将ctrl和case组分开的方式-现在可以工作了!
methySample  <-  
    data.frame(case1=rnorm(10),
               case2=rnorm(10),
               control1=rnorm(10),
               control2=rnorm(10))

# identify the fields that are labeled 'case' and 'control'
caseFields <- grep('case',colnames(methySample), value=TRUE)
controlFields <- grep('control',colnames(methySample), value=TRUE)

# apply the t-test for each row (margin = 1)
apply(methySample,
      1,
      function(x)
          t.test(x[caseFields],
                 x[controlFields])$p.value)
pValue <- numeric(0)
for(i in seq(nrow(methySample)))
    pValue  <-  c(pValue,
                  t.test(methySample[i,caseFields],
                         methySample[i,controlFields])$p.value)