2012-02-18 17 views
0

関数で変数を使用したいのですが、これを行う方法がわかりません。 nrow(値) -関数内で変数を使用する方法

> dim(ind1) 
[1] 9 9 

問題はdiv要素<である:ここに私の関数であり、data.frameのコール:私は私の関数を適用れているdata.frameの

errorByAleles <- function(values){ 
    counts1 <- as.data.frame(table(values), stringsAsFactors = FALSE) 
    modal_value1 <- which.max(counts1$Freq) 
    div <- nrow(values) 
    return ((sum(counts1$Freq)-counts1$Freq[modal_value1])/div) 
} 

error1 <- apply(X=ind1[,2:9],MARGIN=2,FUN=errorByAleles) 

Dimmension 。 div = 9は私がここに必要なものです。だから関数内の "値"のためのnrowを取得するには?私の言いたいことが分かりますか ?

ご協力いただければ幸いです!

+0

'div'は関数のスコープ内でのみ定義されているので、関数を使って書くことはできません。関数を変更するか、関数の外側で別々に 'div'の値を計算する必要があります。 –

+0

Mmmmm、私は関数divを変える必要があると思います... – Chargaff

+0

'MARGIN = 2'は少なくとも2次元の配列を必要としますが、' ind1 [2:9] 'はベクトルですあなたは 'ind1 [2:9、]'や 'ind1 [、2:9]'を行うことを意図していましたか? – flodel

答えて

1

apply()を使用すると、データの各列で機能が実行されています。関数がapply()によって呼び出されると、列を表すベクトルが渡されます。したがって、nrow(values)の代わりにlength(values)を使用してください。

+0

これは私が最初に試したものだが、長さ(値)は関数の中に1を与える..... – Chargaff

+0

Worked!上記のコメントを参照してください.... – Chargaff

関連する問題