gpt4 book ai didi

R - 不同列的 fiddle 图

转载 作者:行者123 更新时间:2023-12-05 01:07:57 27 4
gpt4 key购买 nike

我正在寻找一种方法来绘制带有许多 fiddle (列)的 fiddle 图。问题是我的专栏的长度各不相同。例如,它是这样的:

"V1" "V2"
"V1" 9 255.5
"V2" 432 286
"V3" 161 322.5
"V4" 320.5 277
"V5" 253.5 153.5
"V6" 301 155.5
"V7" 113 218.5
"V8" 341 394
"V9" 138 93.5
........
"V38166" 62 152
"V38167" NA 20.5
"V38168" NA 12
"V38169" NA 40.5
"V38170" NA 88
"V38171" NA 2.5
"V38172" NA 279.5
"V38173" NA 161.5
"V38174" NA 14.5

如您所见,第一列中有一些 NA,因为条目较少。请记住,可能还有更多列。问题是,我可以在任何列中制作带有 NA 的 fiddle 图吗?

我试过这个:
jpeg("violinplot.jpg", width = 1000, height = 1000);
do.call(vioplot,c(statsDataFrame, list(names=nameList)))
dev.off()

statsDataFrame 是我在上面发布的完整数据框。但是,当我运行脚本时,出现以下错误:
Error in quantile.default(data, 0.25) : 
missing values and NaN's not allowed if 'na.rm' is FALSE
Calls: do.call -> <Anonymous> -> quantile -> quantile.default
Execution halted

这基本上是在提示 NA。我试过 na.rm = FALSE 和 na.rm = TRUE 像这样:
jpeg("stats/AllDistanceViolinPlot.jpg", width = 1000, height = 1000);
do.call(vioplot,c(columnViolinDistanceDataUnlist,na.rm=FALSE,list(names=tfListRow)))
dev.off()


jpeg("stats/AllDistanceViolinPlot.jpg", width = 1000, height = 1000);
do.call(vioplot,c(columnViolinDistanceDataUnlist,na.rm=TRUE,list(names=tfListRow)))
dev.off()

但无济于事。

有没有人对如何做到这一点或是否可以做到有任何建议?

感谢您的帮助。

最佳答案

您需要删除使您无法使用 data.frame 的 NA (不等长列)作为您的容器数据结构,但您还想使用 do.call这需要一个列表。因此我会使用 lapply从 data.frame 的每一列中去除 NA 的值s 因为每个都将作为列表元素返回,您仍然可以使用 do.call (假设您的数据名为 df ):

do.call( vioplot, lapply(df, function(x) x[!is.na(x)]) )

或作为 @BrianDiggs 指出,你可以使用更简洁和漂亮的:
do.call(vioplot, lapply(df, na.omit))

关于R - 不同列的 fiddle 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17734864/

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