【发布时间】:2010-07-29 18:38:15
【问题描述】:
我有一个向量列表,它们是长度不等的时间序列。我的最终目标是在ggplot2 图中绘制时间序列。我想我最好先合并数据框中的向量(其中较短的向量将用 NA 扩展),还因为我想以表格格式导出数据,例如 .csv 以供其他人阅读。
我有一个列表,其中包含 所有向量的名称。列标题可以由最长的第一个向量设置。例如:
> mylist
[[1]]
[1] "vector1"
[[2]]
[1] "vector2"
[[3]]
[1] "vector3"
等等
我知道要走的路是使用 Hadley 的 plyr 包,但我想问题是我的列表包含向量的名称,而不是向量本身,所以如果我输入:
do.call(rbind, mylist)
我得到一个包含我想要合并的 df 名称的单列 df。
> do.call(rbind, actives)
[,1]
[1,] "vector1"
[2,] "vector2"
[3,] "vector3"
[4,] "vector4"
[5,] "vector5"
[6,] "vector6"
[7,] "vector7"
[8,] "vector8"
[9,] "vector9"
[10,] "vector10"
等等
即使我用对象自己创建一个列表,我也会得到一个空数据框:
mylist <- list(vector1, vector2)
mylist
[[1]]
1 2 3 4 5 6 7 8 9 10 11 12
0.1875000 0.2954545 0.3295455 0.2840909 0.3011364 0.3863636 0.3863636 0.3295455 0.2954545 0.3295455 0.3238636 0.2443182
13 14 15 16 17 18 19 20 21 22 23 24
0.2386364 0.2386364 0.3238636 0.2784091 0.3181818 0.3238636 0.3693182 0.3579545 0.2954545 0.3125000 0.3068182 0.3125000
25 26 27 28 29 30 31 32 33 34 35 36
0.2727273 0.2897727 0.2897727 0.2727273 0.2840909 0.3352273 0.3181818 0.3181818 0.3409091 0.3465909 0.3238636 0.3125000
37 38 39 40 41 42 43 44 45 46 47 48
0.3125000 0.3068182 0.2897727 0.2727273 0.2840909 0.3011364 0.3181818 0.2329545 0.3068182 0.2386364 0.2556818 0.2215909
49 50 51 52 53 54 55 56 57 58 59 60
0.2784091 0.2784091 0.2613636 0.2329545 0.2443182 0.2727273 0.2784091 0.2727273 0.2556818 0.2500000 0.2159091 0.2329545
61
0.2556818
[[2]]
1 2 3 4 5 6 7 8 9 10 11 12
0.2824427 0.3664122 0.3053435 0.3091603 0.3435115 0.3244275 0.3320611 0.3129771 0.3091603 0.3129771 0.2519084 0.2557252
13 14 15 16 17 18 19 20 21 22 23 24
0.2595420 0.2671756 0.2748092 0.2633588 0.2862595 0.3549618 0.2786260 0.2633588 0.2938931 0.2900763 0.2480916 0.2748092
25 26 27 28 29 30 31 32 33 34 35 36
0.2786260 0.2862595 0.2862595 0.2709924 0.2748092 0.3396947 0.2977099 0.2977099 0.2824427 0.3053435 0.3129771 0.2977099
37 38 39 40 41 42 43 44 45 46 47 48
0.3320611 0.3053435 0.2709924 0.2671756 0.2786260 0.3015267 0.2824427 0.2786260 0.2595420 0.2595420 0.2442748 0.2099237
49 50 51 52 53 54 55 56 57 58 59 60
0.2022901 0.2251908 0.2099237 0.2213740 0.2213740 0.2480916 0.2366412 0.2251908 0.2442748 0.2022901 0.1793893 0.2022901
但是
do.call(rbind.fill, mylist)
data frame with 0 columns and 0 rows
我尝试将向量转换为数据帧,但没有cbind.fill 函数,因此 plyr 抱怨数据帧的长度不同。
所以我的问题是:
这是最好的方法吗?请记住,目标是 a) ggplot2 图和 b) 带有时间序列的表格,在 R
之外查看
获取以对象名称列表开头的对象列表的最佳方法是什么?
突出显示 60 个时间序列模式的最佳图表类型是什么?比例是一样的,但我预测会有很多过度绘制。由于这是一个群组分析,因此使用颜色来突出显示不同群组的新近度(作为连续变量)可能很有用。但是如何避免过度绘制?差异将很小,因此刻面可能会使观看者无法掌握差异。
【问题讨论】:
-
你不能那样做。坚持使用列表,因为它们可以处理可变长度的向量。不过,我不明白你想要达到什么目的......
-
我已经编辑了这个问题,提供了更多的背景信息。对于造成的混乱,我深表歉意。
-
在你的问题中,第三个问题更适合在这里问:stats.stackexchange.com
标签: r