我正在编写一个自定义函数,该函数使我可以进行几个单独的箱形图。 x轴应始终为月,但是y轴应采用多个值,并且代码应针对每种情况绘制单独的箱线图。当我尝试运行下面编写的代码时,出现以下错误:“错误:.l
的元素2的长度必须为1或13,而不是8”。您能解释为什么发生此错误以及如何解决该错误吗?
提前谢谢!
forestfires <-read.csv(url(
"https://archive.ics.uci.edu/ml/machine-learning- databases/forest-fires/forestfires.csv"))
boxplot_months <- function(a,b, mydataset) {
ggplot(data = mydataset) +
aes_string(x=a, y=b) +
geom_boxplot() +
theme(panel.background = element_rect(fill="white")) +
labs(x=a, y=b)
}
indices_vect <- c("FFMC", "DMC", "DC","ISI","temp","RH", "wind", "rain")
args_list <- list(a="month",b=indices_vect, mydataset=forestfires)
pmap(args_list, boxplot_months)
答案 0 :(得分:0)
之所以发生这种情况,是因为pmap
希望您的输入列表(.l
)具有相同的长度。在您的情况下,a
的长度为1,是一个字符串。 forestfires
的长度为13(df的长度为列数)。
由于可以通过重复将长度为1的任何内容向量化为更长的长度,因此它希望您的其他列表元素b的长度为1,在这种情况下,a和b都被重复13次,或者长度为13 ,在这种情况下,只会复制a。
在您的情况下,您实际上根本不需要pmap
,只需要map
,因为每次更改的唯一输入就是b
。如果您将最后一行更改为:
map(.x = indices_vect, .f = boxplot_months, a = "month", mydataset = forestfires)
一切正常,您得到了8个地块。这利用了...
中的map
参数,您可以在其中指定.f
函数的其他参数,这些参数在您通过.x
列表时不会改变。 / p>