2016-09-12 12 views
1

データフレームのリストからプロットのリストを作成していて、リスト内のデータフレームの名前に対応する各プロットにタイトルを追加しようとしています。 lapplyの外側にある場合は、paste0(names(df.list)[x])と呼ぶと、目的のデータフレームの名前が返されます。lapply内にリストされたデータフレーム名を抽出する

私がしようとするとlapply

df.plots<-lapply(df.list, function(x) p<-ggplot(x,aes(x=Numbers,y=Signal)) + geom_point() + ggtitle(paste0(names(df.list)[x])) )

以内にこれを追加すると、私は次のエラーを取得:

Error in names(df.list)[x] : invalid subscript type 'list'

は、私ができるので、私はデータフレーム名を抽出することができ、他の方法はありますそれらをプロットに追加しますか?

+0

リストのすべての要素に名前が付いている場合は、 'ggtitle(names(x)) 'を追加すれば十分だと思います。 – thepule

+1

[この](http://stackoverflow.com/questions/9950144/access-lapply-index-names-inside-fun)に関連するlapplyとnamedのリスト要素に関して。 – aosmith

答えて

1

あなたはmap2 purrr からリストをループし、同時に、リストの名前に使用できる)ことをドロップすることができますので、あなたは、単に単一の値を渡す場合。 map2では、.xは最初のリストを参照し、.yはプロットコードで使用できる2番目のリストを参照します。

library(purrr) 
map2(dlist, names(dlist), 
    ~ggplot(.x, aes(Numbers, Signal)) + 
     geom_point() + 
     ggtitle(.y)) 
1

xの値がリストdf.listの要素であるため、これは失敗します。これは、名前のベクトルのインデックスに使用できるものではありません。

あなたは(Access lapply index names inside FUN

lapply(seq_along(df.list), function(i) { 
    ggplot(df_list[[i]], aes(x=Numbers, y=Signal)) + 
     geom_point() + 
     ggtitle(names(df.list)[i]) 
} 

(また、あなたの直接あなたの質問に関連していないが、paste0の呼び出しは行いませんリンクaosmith質問で説明され、代わりにインデックスベクトルにlapplyを試みることができます何でもあなたがプロットを毎回作成、

関連する問題