2012-05-03 3 views
2

Я создал функцию для вызова функции для каждой строки в наборе данных. Я хотел бы иметь выход как вектор. Как вы можете видеть ниже, функция выводит результаты на экран, но я не могу понять, как перенаправить вывод на вектор, который я могу использовать вне функции.Результат функции вывода для вектора

n_markers <- nrow(data) 
p_values <-rep(0, n_markers) 

test_markers <- function() 
    { 
    for (i in 1:n_markers) 
     { 
     hets <- data[i, 2] 
     hom_1 <- data[i, 3] 
     hom_2 <- data[i, 4] 
     p_values[i] <- SNPHWE(hets, hom_1, hom_2) 
     } 
     return(p_values) 
    } 

test_markers() 
+3

1. Вы должны получить привычку передавать аргументы функций, а не полагаться на глобальные (cf http://stackoverflow.com/questions/5526322/examples-of-the-perils-of-globals-in-r-and-stata). 2. Для этого уже есть функция. Посмотрите на 'apply (my.data, 1, ...)' –

+0

'shinyNewVector <- test_markers()'. Прислушайтесь к советам gsk3. – Chase

+1

Прочтите также базовое введение в R. Вам нужно переключить свой менталитет на мышление в векторах, а не на циклы. – Hansi

ответ

4

Вы только что вернули этот код от here? Я беспокоюсь, что вы даже не пытались понять это самостоятельно, но, надеюсь, я ошибаюсь.

Возможно, вы можете это переусердствовать. Просто хранить результаты вашей функции в векторе, как вы делаете с другими функциями:

stored_vector <- test_markers() 

Но, как уже упоминалось в комментариях, ваша функция, вероятно, может быть уменьшена до:

stored_vector <- sapply(1:nrow(data), function(i) SNPHWE(data[i,2],data[i,3],data[i,4])) 
+0

Большое спасибо за вашу помощь! –

Смежные вопросы