【问题标题】:Cant assign a plot to an object in R无法将绘图分配给 R 中的对象
【发布时间】:2017-03-13 19:43:35
【问题描述】:

我最近打开了一些我一个月前写的代码,当我尝试将 xyplot 分配给变量时,它不起作用。但是如果我不将它分配给变量,我仍然可以看到它。

例子:

xyplot() #returns beautiful plot
p1<-xyplot() #returns nothing
p2<-xyplot() #returns nothing
p1+p2 #returns "Error in p1 + p2 : non-numeric argument to binary operator"

我正在使用 R Studio,我尝试对其进行更新以解决问题,但如果我也只是在 R 中运行它,我也会遇到同样的问题。

我的设置或我分配/命名对象的方式有问题吗?我花了一周时间编写代码来制作这些非常漂亮的图,但现在它不起作用,我不知道为什么。我尝试更改对象名称,使它们没有数字,并且我已经用谷歌搜索了这个。非常感谢任何帮助。

【问题讨论】:

  • xyplot 您定义的函数还是基础 R 的一部分?
  • xyplot 包含在 lattice 包中。我应该这么说的。对不起。
  • 只需输入p1 即可“绘制”情节。或者使用(p1&lt;-xyplot())(注意额外的括号)。当您执行分配 (&lt;-) 时,R 通常不会打印结果。你想用p1+p2 做什么?您不能完全“添加”地块。
  • 当然我的代码有 x 和 y 变量,以及 () 中定义的数据源。
  • 这似乎不太可能。 lattice 在上个月没有太大变化。也许您加载了一个不同的包,它提供了一些其他功能。在这一点上很难说没有时间机器。但是您现在看到的行为是您在“vanilla” R 中应该一直看到的。

标签: r plot lattice


【解决方案1】:

网格图(包括latticeggplot2)就像普通的 R 对象一样工作。 (实际上,它们只是普通的 R 对象。)

如果您在控制台中输入x &lt;- 1 + 2,您将看不到3 的结果。但是,如果您随后输入 xprint(x),您将看到其值 3,并打印出来。

绘图的工作方式相同:p1 &lt;- xyplot(...) 会将绘图分配给 p1,但不会打印绘图。如果您随后输入p1print(p1),将打印该图。

如果您在控制台中输入1 + 2,则将打印结果3。同样,如果您在控制台中输入xyplot(...) 没有分配它,则绘图将打印出来。


如果将整行括在括号中,您可以同时获得分配和打印:(x &lt;- 1 + 2) 将分配x 并打印3。同样(p1 &lt;- xyplot(...)) 将分配和打印情节。

【讨论】:

  • 谢谢。这是真的。我可以通过在对象和绘图函数周围加上括号来单独打印每个绘图。我仍然无法让它做的是添加我创建的两个地块,这是一个月前它曾经做过的事情。我尝试了 (p1+p2) 和 p3=p1+p2 和 p3=(p1+p2) 和 (p3=p1+p2) 并且它们都返回相同的错误消息:“p1 + p2 中的错误:非数字参数二元运算符"
  • 将格子图加在一起似乎是一个与不打印图非常不同的问题。我不认为它是标准 lattice 的一部分,也许它是在 latticeExtra 包中定义的?
  • 啊!谢谢你!我不确定 latticeExtra 是如何被卸载的,但确实如此。我知道一定有一个愚蠢的错误导致了这种情况。如果您将此作为答案提交,我将接受它作为答案。否则我只能接受这个评论的答案。再次感谢。我是 R 的新手,我经常遇到这样的事情。
  • 我认为按原样回答是您所提问题的最佳答案。 “将两个图加在一起”可能应该是一个不同的问题。
【解决方案2】:

我猜你上次加载了latticeExtra,它添加了将多个格子对象添加为图层的选项。 (见help("+.trellis", package = "latticeExtra")。)

library(lattice)

p1 <- xyplot(1:10 ~ 1:10)
p2 <- bwplot( ~ runif(10, 1, 10))

p1 + p2 # does not work

library(latticeExtra)

p1 + p2 # works now

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2020-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多