首页 > 解决方案 > 将值组合在一起

问题描述

我试图以这样一种方式对我的数据进行分组,即每个数据集的第一个值,然后是每个数据集的第二个值,然后是每个数据集的第三个值。这是我所做的,以及每个数据集的样子:

#datasets created
newmax <- sapply(unstack(subset), function(r){max(values(r))})
newmax1 <- sapply(unstack(subset5), function(r){max(values(r))})
newmax2 <- sapply(unstack(subset18), function(r){max(values(r))})

> newmax
[1] 285.9906 287.6668 276.2251 247.1718 254.9781 308.1921 234.6858 235.7213 242.0865 247.1022 
233.6528 243.9972 297.6855
[14] 264.3488 251.2206 249.4745 242.8481 241.2680 347.7225 241.0539 359.7334 256.2414 343.5733 
270.5300 237.6458 260.9076
[27] 281.6629 273.9240 237.9238 237.8657 274.8282 254.7619 274.5488 240.1335 288.5369 263.7763 
256.8988 237.8154 335.7295
[40] 251.1009 268.0298 284.0815 335.7390 260.6265 261.9585 245.4095 317.5088 326.1608 301.0854 
256.6393 261.7769 248.8044
[53] 316.8620 285.2788 291.7393 282.7814 295.2238 263.5885 293.1581 323.0423 275.8465 321.7197 
267.7597 260.1087 300.4011
[66] 289.7009 312.8771 247.2548 310.7060 293.6764 294.6003 301.9609 274.3764 324.2272 326.5802 
312.4825 306.0726 271.3173
[79] 292.4768 270.7873 287.0801 363.9818 256.2259 282.1166 305.7313 276.7374 356.4052 296.8313 
355.2177 360.6911

> newmax1
[1] 159.0246 133.6294 153.0331 160.4190 148.2776 142.6571 172.3195 157.7454 148.3942 165.9219  
139.6812 140.4338 161.9404
[14] 136.1558 222.1469 160.5796 146.9243 146.8993 138.4256 181.2822 180.0468 136.2687 149.4805 
169.0774 156.5708 197.8407
[27] 191.2747 171.9067 302.4844 161.1594 166.2600 150.5847 171.2477 153.5008 176.8167 164.1645 
202.1044 185.5567 159.5147
[40] 188.2911 157.7030 159.3245 168.7951 145.3923 184.0441 169.1975 152.4814 157.8601 218.1362 
181.0313 241.6280 145.9474
[53] 181.1191 197.6868 160.4712 166.6491 182.9139 202.4592 164.4607 192.3751 216.7510 155.9616 
223.6624 170.2424 192.1529
[66] 166.4860 162.0195 231.3395 178.0869 212.7882 172.4338 174.4920 196.2973 195.0461 232.1316 
160.4764 235.2968 248.9072
[79] 164.1591 193.9029 173.5751 233.6983 160.4132 178.4975 238.9297 184.6619 202.9835 244.6498   
225.4075 180.8024


> newmax2
[1] 240.5591 200.7394 215.9244 211.9053 194.3641 243.4610 185.3560 224.9627 191.5551 202.0553 
219.7212 182.8306 218.4132
[14] 226.3639 234.4197 216.8123 225.2460 192.8765 257.7413 197.9228 213.0739 271.9188 192.6500 
195.1350 194.0970 203.7642
[27] 179.7267 216.7133 199.1632 223.2381 248.6822 211.2326 241.4532 197.2935 194.6268 189.2713 
198.8254 217.6894 227.3989
[40] 218.0017 198.4878 271.2049 225.8836 195.0280 235.8415 269.6207 177.6220 218.8525 238.0074 
231.2968 206.1418 251.5883
[53] 195.4047 176.4463 265.4490 274.9973 262.3909 214.1287 348.5859 272.7213 230.3467 208.9446 
247.6072 246.7016 225.6779
[66] 213.9412 279.3386 229.7833 270.4096 235.7482 211.5287 235.5385 200.0058 221.8117 210.8134   
252.3336 214.9943 262.2128
[79] 217.4706 211.3952 216.3089 227.9274 282.2023 232.6686 239.9312 209.6954 238.7950 284.0325 
233.5386 232.6486

为了隔离第一个、第二个和第三个值,我尝试了这个:

combined <- cbind(newmax[1],newmax1[1], newmax2[1], newmax[2], newmax1[2], newmax2[2], 
newmax[3], newmax1[3], newmax2[3])

> combined

     [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]     [,8]     [,9]
[1,] 285.9906 159.0246 240.5591 287.6668 133.6294 200.7394 276.2251 153.0331 215.9244

这正是我想要的(即所有第一个值,然后是第二个值和第三个值)。但是,我希望数据按照原始数据集中的方式排列(即 newmax、newmax1、newmax2)——使用“cbind”似乎会创建列?另外,是否有更快的方法来以相同的方式排列值,或者我所做的唯一方法是什么?

谢谢,任何帮助将不胜感激!

标签: rarrays

解决方案


提供类似 sapply(x,`[`, c(1,2,3))
的内容,它将对您的对象 xa 镜头应用索引;
或者类似的东西

lapply(X = x, FUN = subset, select=c(1,2,3))

如果是列,则不确定从您的数据中判断出什么适合您。
PS:rbind将像cbind列绑定一样进行行绑定


推荐阅读