質問

Rを使用してデータフレームをループし、計算を実行してプロットを作成します。

for(i in 2 : 15){
# get data
dataframe[,i]  

# do analysis

# make plot
a <- plot()
}

「i」の値を使用して、プロットオブジェクト名「a」を作成する方法はありますか?たとえば、+ <!> quot; i <!> quot; <!> lt;-plot()。次に、それをベクトルに追加して一連のプロットを作成し、後でPDFを作成するときに使用できるようにします。または、これを保存する別の方法があるかもしれません。

paste()関数には精通していますが、それを使用してオブジェクトを定義する方法がわかりません。

役に立ちましたか?

解決

<!> quot; vector <!> quot;が必要な場合プロットオブジェクトの最も簡単な方法は、おそらくlistに格納することです。 paste()を使用してプロットの名前を作成し、リストに追加します。

# Create a list to hold the plot objects.
pltList <- list()

for( i in 2:15 ){

  # Get data, perform analysis, ect.

  # Create plot name.
  pltName <- paste( 'a', i, sep = '' )

  # Store a plot in the list using the name as an index.
  # Note that the plotting function used must return an *object*.
  # Functions from the `graphics` package, such as `plot`, do not return objects.
  pltList[[ pltName ]] <- some_plotting_function()

}

リストにプロットを保存したくなく、文字通りpltNameに含まれる名前を持つ新しいオブジェクトを作成したい場合、assign()

を使用できます。
# Use assign to create a new object in the Global Environment
# that gets it's name from the value of pltName and it's contents
# from the results of plot()
assign( pltName, plot(), envir = .GlobalEnv )

他のヒント

パッケージlatticeまたはggplot2を見ると、これらのパッケージのプロット関数は、変数に割り当てられ、後で印刷またはプロットできるオブジェクトを作成します。

たとえば<=>の場合:

library("lattice")
i <- 1
assign(sprintf("a%d", i), xyplot(1:10 ~ 1:10))
print(a1) # you have to "print" or "plot" the objects explicitly

またはオブジェクトをリストに追加します:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top