我有一个名为res
的列表,如下所示:
[[1]]
[,1] [,2]
[1,] 275.0637 273.9386
[2,] 5.707791 5.755798
[[2]]
[,1] [,2]
[1,] 126.8435 59.08806
[2,] 4.867521 3.258545
[[3]]
[,1] [,2]
[1,] 23.50188 60.96321
[2,] 2.036354 3.737291
该列表包含模拟运行的结果共6次。我将感兴趣的参数设置为三个不同的值,'0'(即,[[1]]),'25'(即[[2]])和'50'(即[[3]] )。由于该模型包含大量随机性,因此我为每个值运行模型两次(即[,1],[,2])。我要求模型记录每次迭代的两次结果,“时间进给”(即[1,]和“行进距离”(即[2,])。最后,我将为每个变量设置迭代模型30次。我想使用ggplot
创建一个箱形图,显示三个模拟设置(即0,25,50)中每个模拟设置的“时间进给”和“行进距离”。我相信ggplot
可以我没有绘制列表,因此我尝试使用res
将res2 <- data.frame(res)
转换为数据框,如下所示:
X1 X2 X1.1 X2.1 X1.2 X2.2
1 275.0637 273.9386 126.8435 59.08806 23.50188 60.96321
2 5.707791 5.755798 4.867521 3.258545 2.036354 3.737291
这对我来说并不合适,因为现在所有三个模拟的结果都在同一行。将这些数据导入ggplot
以创建箱形图的任何帮助都会非常有用。提前谢谢!
- 尼尔
答案 0 :(得分:1)
假设ll是您的列表,您可以像这样使用do.call
和rbind
:
do.call(rbind,lapply(seq_along(ll),
function(x)data.frame(ll[[x]],iter=x)))
X..1. X..2. iter
[1,] 275.063700 273.938600 1
[2,] 5.707791 5.755798 1
[1,]1 126.843500 59.088060 2
[2,]1 4.867521 3.258545 2
[1,]2 23.501880 60.963210 3
[2,]2 2.036354 3.737291 3
经过澄清后编辑:
interest <- c(0,25,50)
do.call(rbind,lapply(seq_along(ll),
function(x)data.frame(x= unlist(ll[[x]]),interst=interest[x])))
interst=interest[x] .... [TRUNCATED]
x interst
X..1.1 275.063700 0
X..1.2 5.707791 0
X..2.1 273.938600 0
X..2.2 5.755798 0
X..1.11 126.843500 25
X..1.21 4.867521 25
X..2.11 59.088060 25
X..2.21 3.258545 25
X..1.12 23.501880 50
X..1.22 2.036354 50
X..2.12 60.963210 50
X..2.22 3.737291 50
编辑,因为OP不提供数据ll:
res <- list(read.table(text='
[,1] [,2]
[1,] 275.0637 273.9386
[2,] 5.707791 5.755798'),
read.table(text='
[,1] [,2]
[1,] 126.8435 59.08806
[2,] 4.867521 3.258545'),
read.table(text='
[,1] [,2]
[1,] 23.50188 60.96321
[2,] 2.036354 3.737291'))
答案 1 :(得分:0)
我愿意
names(res) = c("0", "25", "50")
m = reshape2::melt(res, id = 1)
但也许它不起作用,我在脑海里尝试过,因为你没有提供可用形式的数据。