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.あなたはすべきですグローバルに頼るのではなく、関数の引数を渡すという習慣が必要です(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の基本的な紹介も読んでください。 forループではなくベクトルで思考に切り替える必要があります。 – 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

あなたの助けをたくさんありがとう! –

関連する問題