我想制作一张包含四个不同组的四个小提琴图的图表。我收到错误,我不知道该修复什么。每个组(群集)有两列,一组标识符和年龄值(以月为单位)。这是我试图运行的代码。
library(vioplot)
vioplot(cluster1, cluster2, cluster3, clusterTD, names = c("Group 1","Group 2","Group 3","Group 4 (TD)"), col=(c("hotpink", "darkorange1", "mediumpurple1", "blue")))
title("Violin Plots of Age in Months"))
这是我得到的错误。
[.data.frame
中的错误(x,顺序(x,na.last = na.last,减去= 减少)):选择未定义的列
有谁知道我做错了什么?
如何解释错误信息?
这是因为x和y没有明确定义吗?
我希望y轴为Age值,x为组(簇),因此有四个组。
我真的很感激我收到的任何帮助!
答案 0 :(得分:0)
如果没有可重复的示例,很难为您提供准确的解决方案。 我猜你的一个或多个类是data.frame。这会重现错误:
library(vioplot)
x1 <- mtcars$mpg[mtcars$cyl==4]
vioplot(data.frame(x1),names=c("4 cy"), col="gold")
您应该unlist
您的群组参数。
vioplot(unlist(cluster1), unlist(cluster2), unlist(cluster3),...)
内部violplot正在调用quantile
S3method
。此语句重现相同的错误:
quantile(data.frame(x1),0.25)
实际上,default
quantile S3method
被调用,它期待一个数字向量。它失败了data.frame
。我认为应该在函数开头检查quantile
默认函数。类似的东西:
if(!is.vector(x)) stop("arg should be a numeric vector")