2017-08-04 8 views
0

巨大で醜いので、私はあなたに私の実際のコードを表示していません。 は、しかし、私は、標準的なRパッケージを使用して問題を再作成:lapplyでプロットタイトルとして関数の引数を追加するには?

# a list of a few r standard datasets 
datasets <- list(PlantGrowth, cars, faithful) 

# a function that plots a dataset and adds its name to the title 
plotstuff <- function(dataset) { 
    plot_title <- substitute(paste("Plot of ", dataset, sep=" ")) 
    plot(dataset, main = plot_title) 
} 
私は

plotstuff(PlantGrowth) 
plotstuff(cars) 
plotstuff(faithful) 
のような個々のデータセットを持つ関数を実行すると、データセット(すなわち、関数の引数)の名前が正常に描画タイトルに追加され

私は多くのデータセットを持っているので

私はこのようなlapplyでこれを行うしたいと思います:

lapply(datasets, plotstuff) 

をしかし、そうすることで、私は奇妙なタイトルを得る:のプロットを[[ (X、i)をデータセットの名前の代わりに使用します。 lapplyを使用して、プロットタイトルにデータセットの名前を表示させるにはどうすればよいですか?

ここで私が見つけることができる唯一の関連するトピックです。 (そして、それは本当に...助けにはならなかった)

Use variable name as plot title with lapply

EDIT: ありがとう! しかし私は他の例を理解していないようです。

"の代わりに、リスト項目の名前にlapply使用:"

lapply(names(afn), function(x) plot(afn[[x]], main=x)) 

まず、私はリストに名前を追加します。

datasets <- list(PlantGrowth = PlantGrowth, cars = cars, faithful = faithful) 

そして、私が試した:

plotstuff <- function(dataset) { 
    chart_title <- substitute(paste("Plot of ", dataset, sep=" ")) 
    plot(datasets[[dataset]], main = chart_title) 
} 
lapply(names(datasets), plotstuff) 

機能しませんでした...また、関数内のリストデータセットを参照したくありません。後で別の名前で2番目のリストを使用する場合はどうすればよいですか? 誰でもこの例題の解をここに知っていますか?

+1

。 '名前(データセット)'を試してください。比較のために、 'L = list(a = 1、b = 2)'とします。 – Frank

+0

リストに名前を付け、リンクされた複製をガイダンスとして使用します。 –

+0

ありがとう!それを終えた。私はまだ立ち往生しています(編集を参照してください)... –

答えて

0

他の質問と同様に、lapplyは、ここで必要なことをしません。関数を適用すると、リストを作成するために使用された項目ではなく、リストの要素に適用されます。

方法について:あなたのリストには、名前を持っていないので、 `lapply`がそれらを知っている可能性が方法はありません

datasets <- list(PlantGrowth = PlantGrowth, cars = cars, faithful = faithful) 

plotstuff <- function(dataset, name) { 
    plot_title <- paste("Plot of ", name, sep=" ") 
    dev.new() 
    plot(dataset, main = plot_title) 
} 

mapply(plotstuff, dataset = datasets, name = names(datasets)) 
+0

ありがとう!マッパリは有望に見えます! 私がこのコードを書いたとき、私は3つのポップアップを得ました。 しかし、RStudioの右下にあるPlotsをチェックすると、私は最初のプロット(PlantGrowthのプロット)しか見つけられません。 もう一度コードを実行しようとしましたが、2回目は機能しませんでした。 dev.new()が何をしているのか分かりません。何かヒント? –

+0

@ mire-mike、 'dev.new'は新しいプロットウィンドウを開きます。 'dev.new'を使用しなかった場合、各プロットは同じプロットウィンドウの前のプロットを上書きします。私はRStudioが各 'dev'のタブを開くべきだと思うが、私は最近RStudioを使用していない。 – mikeck

関連する問題