2017-02-15 7 views
0

私は、data.frameでapply関数とユーザー定義関数を使用しようとしています。関数内では、(プロットのタイトルの)列名を使用したいが、applyは列名を削除してベクトルだけを渡すようだ。 MWE:適用関数を通したコロン名R

trialData <- data.frame('a' = rnorm(100), 
         'b' = rnorm(100), 
         'c' = rnorm(100)) 

someData <- function(dataInput){ 
    return(colnames(dataInput)) 
} 

dataOutput <- apply(trialData, 2, someData) 

print(dataOutput) 

返信NULL関数内で列名にアクセスする方法はありますか?

+0

* apply関数では、ループしているデータの「属性」にはアクセスできません。 * applyの中からcolnamesにアクセスするいくつかのラウンドアバウト方法がありますが、私の質問はこのコードで何を達成しようとしていますか?あなたの投稿に基づいて、 'apply'を呼び出す必要はありません。 – emilliman5

+0

私は実際の機能の中でかなりたくさんのことをやっていますが、いくつかはカラムの名前が必要です。たとえば、私はいくつかの数字を生成し、私はタイトルにその名前を使用したいと思います。私は、私は属性を得ることができない場合は、私はそれが文字列を取るように関数を書き直す必要があり、2つの引数を取るように適用する呼び出しをする必要がありますね。 – Lespied

+0

まず、lapplyを使用して列を反復処理することを検討します。第2に、データフレームをlapplyに渡す代わりに、列名を渡して、目的の操作のためにデータフレームからサブセットを渡します。 – emilliman5

答えて

0

コメント者のおかげで私は私の望む結果を得るために以下に到着しました。

trialData <- data.frame('a' = rnorm(100), 
         'b' = rnorm(100), 
         'c' = rnorm(100)) 

someData <- function(dataInput){ 
    # lots of code here 
    return(
    dataName = colnames(dataInput) 
) 
} 

dataOutput <- lapply(colnames(trialData), function(x){someData(trialData[x])}) 

print(dataOutput) 
関連する問題