text: user4915: I used ComBat() for batch effect correction in my expression data. basically, that function inputs are expression data, Batch covariate, and Model matrix for the outcome of interest and other covariates besides batch. So, I prepared all inputs based on the instruction of ComBat() function in 'sva' package. "Pheno_LMS" is my clinical data inclus batchId of my samples and "TCGA_expr_log" is my expression data. my code is below:
  Pheno_LMS structure:
  Sample        batchId   age  . . . 
  GSM71019.CEL    396     63
  GSM71020.CEL    396     58
  GSM71021.CEL    410     85
  GSM71020.CEL    411     58
  GSM71021.CEL    410     40
  .
  .
  .
  dim(Pheno_LMS)
  [1] 74 37
  
  TCGA_expr_log structure:
                     GSM71019.CEL 1      GSM71019.CEL 2        GSM71019.CEL 3  . . . 
      Gene id          
    ENSG00000000003     10.115170           8.628044                  8.779235  
    ENSG00000000005     5.345168            5.063598                   5.113116
    ENSG00000000009     6.348024            6.663625                   6.465892     
      .
      .
      .
  dim(TCGA_expr_log)
  [1] 42817    74
  
  batch = Pheno_LMS$batchId
  modcombat = model.matrix(~1, data=Pheno_LMS)
  TCGA_expr_Co <-  ComBat(as.matrix(TCGA_expr_log),batch = batch,mod = modcombat, par.prior = TRUE,mean.only = TRUE)
  
  but when I run that function, I got below error:
  Error in apply(dat[, batch == batch_level], 1, function(x) { : 
    dim(X) must have a positive length
  
  Now, I need anybody comments about my problem. thanks
  P.S: when i call batch I see:
  > batch
   [1] 13 13 13 14 14 14 14 14 14 14 14 6  6  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7 
  [29] 7  8  7  8  11 11 11 14 12 1  6  4  2  3  3  3  3  6  6  1  3  9  8  6  11 7  3  5 
  [57] 4  5  5  4  4  11 8  8  12 12 12 12 12 10 10 10 11 13
  Levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  
  
  user77: batch = Pheno_LMS$batchId should be batch = Pheno_LMS$BatchId, if you fix that then at least the code you showed works just fine.
  
original_text: 4915: <p>I used <code>ComBat()</code> for batch effect correction in my expression data. basically, that function inputs are expression data, Batch covariate, and Model matrix for the outcome of interest and other covariates besides batch. So, I prepared all inputs based on the instruction of <code>ComBat()</code> function in 'sva' package. "Pheno_LMS" is my clinical data inclus batchId of my samples and "TCGA_expr_log" is my expression data. my code is below:</p>
  
  <p>Pheno_LMS structure:</p>
  
  <pre><code>Sample        batchId   age  . . . 
  GSM71019.CEL    396     63
  GSM71020.CEL    396     58
  GSM71021.CEL    410     85
  GSM71020.CEL    411     58
  GSM71021.CEL    410     40
  .
  .
  .
  dim(Pheno_LMS)
  [1] 74 37
  </code></pre>
  
  <p>TCGA_expr_log structure:</p>
  
  <pre><code>                   GSM71019.CEL 1      GSM71019.CEL 2        GSM71019.CEL 3  . . . 
      Gene id          
    ENSG00000000003     10.115170           8.628044                  8.779235  
    ENSG00000000005     5.345168            5.063598                   5.113116
    ENSG00000000009     6.348024            6.663625                   6.465892     
      .
      .
      .
  dim(TCGA_expr_log)
  [1] 42817    74
  
  batch = Pheno_LMS$batchId
  modcombat = model.matrix(~1, data=Pheno_LMS)
  TCGA_expr_Co &lt;-  ComBat(as.matrix(TCGA_expr_log),batch = batch,mod = modcombat, par.prior = TRUE,mean.only = TRUE)
  </code></pre>
  
  <p>but when I run that function, I got below error:</p>
  
  <pre><code>Error in apply(dat[, batch == batch_level], 1, function(x) { : 
    dim(X) must have a positive length
  </code></pre>
  
  <p>Now, I need anybody comments about my problem. thanks</p>
  
  <p>P.S: when i call batch I see:</p>
  
  <pre><code>&gt; batch
   [1] 13 13 13 14 14 14 14 14 14 14 14 6  6  7  7  7  7  7  7  7  7  7  7  7  7  7  7  7 
  [29] 7  8  7  8  11 11 11 14 12 1  6  4  2  3  3  3  3  6  6  1  3  9  8  6  11 7  3  5 
  [57] 4  5  5  4  4  11 8  8  12 12 12 12 12 10 10 10 11 13
  Levels: 1 2 3 4 5 6 7 8 9 10 11 12 13 14
  </code></pre>
   77: <p><code>batch = Pheno_LMS$batchId</code> should be <code>batch = Pheno_LMS$BatchId</code>, if you fix that then at least the code you showed works just fine.</p>
  