2012-05-03 4 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. 당신은해야 : 코멘트에 언급 한 바와 같이

stored_vector <- test_markers() 

을하지만, 함수는 아마도 감소 될 수있다 전역에 의존하기보다는 함수의 인수를 버리는 습관을 갖습니다 (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에 대한 기본적인 소개를 읽으십시오. for 회 돌이 대신 벡터로 사고하기 위해 사고 방식을 전환해야합니다. – Hansi

답변

4

이 코드를 here에서 가져 왔습니까? 나는 네가 처음에 알아 내려고조차하지 않으려 고 조심스럽게 걱정하지만 희망을 갖고 나는 틀렸다.

너는 이것을 지나치게 생각할 수도 있습니다. 단순히 다른 기능처럼 벡터에 함수의 결과를 저장 :

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

귀하의 도움에 많은 감사드립니다! –