无法为R

时间:2017-03-13 19:43:36

标签: r plot lattice

我最近打开了一个月前我写的一些代码突然间,当我尝试将一个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中运行它也会遇到同样的问题。

我的设置有问题或我如何分配/命名对象?我花了一个星期的时间编写我的代码来制作这些非常漂亮的图,现在它不起作用,我无法找出原因。我尝试更改对象名称,因此他们没有数字,我已经用Google搜索了这个。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

网格图(包括latticeggplot2)就像常规R对象一样工作。 (事实上​​,它们只是常规的R对象。)

如果您在控制台中输入x <- 1 + 2,则无法看到结果3。但是,如果您输入xprint(x),则会看到其值3已打印出来。

图表的工作方式相同:p1 <- xyplot(...)会将图表分配给p1,但不会打印图表。然后,如果您输入p1print(p1),则会打印图表。

如果您在控制台中输入1 + 2而不进行分配,则会打印结果3。同样,如果您在控制台中输入xyplot(...)而不进行分配,则会打印图表。

如果将整行包装在括号中,则可以同时获得分配和打印:(x <- 1 + 2)将分配x并打印3。同样地,(p1 <- xyplot(...))将分配并打印图。

答案 1 :(得分:0)

我猜你上次加载了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

enter image description here