在 R 中迭代生成名称以存储绘图

发布于 2024-08-13 01:59:06 字数 298 浏览 1 评论 0原文

我正在使用 R 循环数据框、执行计算并绘制图表。

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

# do analysis

# make plot
a <- plot()
}

有没有办法让绘图对象名称为“a”,使用“i”的值?例如,a+“i”<-plot()。然后我想将其添加到向量中,这样我就有了一系列绘图,可以在稍后阶段制作 pdf 时使用。或者也许还有另一种存储方式。

我熟悉 Paste() 函数,但我还没有弄清楚如何使用它来定义对象。

I'm using R to loop through a data frame, perform a calculation and to make a plot.

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

# do analysis

# make plot
a <- plot()
}

Is there a way that I can make the plot object name 'a', using the value of 'i'? For example, a + "i" <- plot(). Then I want to add that to a vector so I have a series of plots that I can then use at a later stage when I want to make a pdf. Or perhaps there is another way of storing this.

I'm familiar with the paste() function but I haven't figured out how to define an object using it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

灵芸 2024-08-20 01:59:06

如果您想要绘图对象的“向量”,最简单的方法可能是将它们存储在列表中。使用 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()

}

如果您不想将绘图存储在列表中,并且实际上想要创建一个具有以下内容的新对象: name 包含在 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 )

If you want a "vector" of plot objects, the easiest way is probably to store them in a list. Use paste() to create a name for your plot and then add it to the list:

# 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()

}

If you didn't want to store the plots in a list and literally wanted to create a new object that had the name contained in pltName, then you could use 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 )
南街女流氓 2024-08-20 01:59:06

看一下latticeggplot2包,这些包中的绘图函数创建可以分配给变量并可以在稍后阶段打印或绘制的对象。

例如使用lattice

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(...)

Have a look at the packages lattice or ggplot2, the plot functions in these packages create objects which can be assigned to variables and can be printed or plotted at a later stage.

For instance with lattice:

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

Or append the objects to a list:

p <- list()
p[[1]] <- xyplot(...)
p[[2]] <- xyplot(...)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文