Моя функция g (x, y) не сохраняет P-значения в data.frame - PullRequest
0 голосов
/ 17 сентября 2011

У меня 507 таблиц с (pattern = "human").
Внутри каждой таблицы есть ряд столбцов, которые я хочу сравнить с помощью t-критерия Стьюдента.Прежде чем я изучил «функции», я инициализировал 16 столбцов в моем data.frame и копировал большой код для 16 сравнений.:( Но я хочу упростить код с помощью функций.

Q: Нужен ли какой-нибудь счетчик или для использования 'cbind'? Или что ??
Anyпредложения?

files_to_test <- list.files(pattern="human")  
num_files <- length(files_to_test)  

## Function: Calculate t-test P-values ##
g<-function(compareA,compareB) {
   for (i in 1:num_files){
      temp <- read.table(files_to_test[i], header=TRUE, sep="\t")
      ## Obtain Columns To Compare ##
      colA <- temp[compareA]
      colB <- temp[compareB]
      ttr <- t.test(colA, colB, var.equal=TRUE)
      tt_pvalues[i,1] <- ttr$p.value
      }
tag <- paste(compareA, compareB, sep="_Vs_")
tt_titles <- data.frame(tag,tt_titles) # Here is my problem.  
ALL_pvalues <- data.frame(tt_pvalues, ALL_pvalues) # Here is my problem.  
}

## Comparison 1
compareA <-"log_b" 
compareB <-"log_b_rich"
g(compareA,compareB)

## Comparison 2
compareA <-"fc_Etoh_CDT_tot_poly"
compareB <-"log_b_rich"
g(compareA,compareB)

Мой ожидаемый результат должен быть следующим:

source.file.name, tag[i], tag[j], ...  
files_to_test[1], #, #, ...  
files_to_test[2], #, #, ...  

Что я пытаюсь сделать, это добавить или сложить мои недавно табулированные данные ttest с более ранними данными ttest, либо cbindили data.frame. Я не уверен.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2011

Я думаю, вам нужно переместить операцию тегирования внутри цикла:

# Pre-allocate tag[i] outside the loop
tag <- vector("character", length=num.files)

g<-function(compareA,compareB) {
   for (i in 1:num_files){
      temp <- read.table(files_to_test[i], header=TRUE, sep="\t")
      ## Obtain Columns To Compare ##
      colA <- temp[compareA]
      colB <- temp[compareB]
      ttr <- t.test(colA, colB, var.equal=TRUE)
      tt_pvalues[i,1] <- ttr$p.value
   tag[i] <- paste(compareA, i, "Vs" compareB, i sep="_")
      }

tt_titles <- data.frame(tag, tt_titles) # Here is my problem.  
ALL_pvalues <- data.frame(tt_pvalues, ALL_pvalues) # Here is my problem.  
}
0 голосов
/ 17 сентября 2011

Нет данных для игры ... Как-то так?

g <- function(compareA, compareB) {
   tt_pvalues <- NULL
   for (i in 1:num_files){
      temp <- read.table(files_to_test[i], header=TRUE, sep="\t")
      colA <- temp[compareA]
      colB <- temp[compareB]
      ttr <- t.test(colA, colB, var.equal=TRUE)
      tt_pvalues[i] <- ttr$p.value 
      }
   out <- data.frame(files = files_to_test, pval = tt_pvalues)
   return(out)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...