gpt4 book ai didi

r - 将箱线图应用于多个变量

转载 作者:行者123 更新时间:2023-12-04 04:55:36 25 4
gpt4 key购买 nike

我有这个数据框:

set.seed(50)
data <- data.frame(age=c(rep("juv", 10), rep("ad", 10)),
sex=c(rep("m", 10), rep("f", 10)),
size=c(rep("large", 10), rep("small", 10)),
length=rnorm(20),
width=rnorm(20),
height=rnorm(20))

age sex size length width height
1 juv m large 0.54966989 -0.34992735 0.10955641
2 juv m large -0.84160374 -0.58689714 -0.41341885
3 juv m large 0.03299794 -1.58987765 0.11179591
4 juv m large 0.52414971 1.68955955 -2.89232140
5 juv m large -1.72760411 0.56358364 0.09534935
6 juv m large -0.27786453 2.66763339 0.49988990
7 juv m large 0.36082844 0.35653495 0.94937215
8 juv m large -0.59091244 -0.36212039 -1.65840096
9 juv m large 0.97559055 0.56874633 -1.48161964
10 juv m large -1.44574995 0.02867454 -0.49068623
11 ad f small 0.29520677 0.19902339 0.01475390
12 ad f small 0.55475223 -0.85142228 0.33763747
13 ad f small -0.49863554 -1.13044947 -1.96590570
14 ad f small 0.19573384 0.59724896 -2.32077461
15 ad f small -0.45554055 -1.09604786 0.99581082
16 ad f small -0.36285547 0.01909655 1.16695158
17 ad f small -0.15681338 0.41619898 -0.86517483
18 ad f small -0.76525139 1.83967570 -1.39094651
19 ad f small -1.16601736 0.40618657 -1.33263085
20 ad f small -0.32342568 0.39322175 -0.13883976

通过调用一个函数,我想制作每个 length 的箱线图。 , widthheight对每一级 age , sexsize .所以输出应该是 9 个不同的图(并且 9 个图中的每一个都应该包含每个级别的 2 个“框”。

我试过这个功能:
exploreBoxplots <- function (dataframe, x.variables, y.variables) {
library(plyr); library(ggplot2)
xVariables <- list(x.variables)
yVariables <- list(y.variables)
llply(xVariables, function(x) ggplot(dataframe, aes(x, yVariables)) +
geom_boxplot())
}

exploreBoxplots(data,c(data$age, data$sex, data$size), c(data$length, data$width, data$height))

...但这会产生错误。我怎样才能得到这个函数来制作 9 个箱线图?

最佳答案

如果您需要 9 个单独的图,那么我的方法是,首先,将 x 列和 y 列的变量名称存储。

xVariables<-names(data[,1:3])
yVariables<-names(data[,4:6])

然后用 expand.grid()组合所有变量,然后将列转换为字符。
gg<-expand.grid(xVariables,yVariables)
gg<-data.frame(lapply(gg, as.character), stringsAsFactors=FALSE)

现在您可以使用 apply()制作情节。重要的是使用 aes_string()因为 x 和 y 值将作为变量名称提供。
apply(gg,1,function(x) ggplot(data,aes_string(x=x[1],y=x[2]))+geom_boxplot())

关于r - 将箱线图应用于多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16785423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com