r - 从列表中的数据框中提取不同的行集

标签 r dataframe

给你一个可重复的例子会很困难,但总的来说,对你们中的许多人来说,这应该是一件容易的事。中午喝完咖啡后,我的大脑还没有打开。

我有一个包含 20-30 个数据框的列表。我想从每个数据框中提取特定的行。该模式将非常重复。

从第一个数据帧,我们称之为 LD1我要取行 1:8并且从每个下一个数据帧开始,行号将增加 8 ,所以 9:16 , 第三 - 17:24 , 等等。

我想保留这些数据框的原始名称。

有人可以打开我大脑中的灯吗?

最佳答案

一种想法是使用 Map并使用简单的数学公式创建索引,该公式适用于列表中任意数量的数据框,即

Map(function(x, y)x[seq(8) + y * 8,, drop = FALSE], l2, 0:(length(l2) - 1))

这使,
$v1
   v1
1 444
2  52
3 345
4  48
5 375
6 491
7  10
8 126

$v1
    v1
9   57
10 354
11 239
12 205
13 273
14 172
15 345
16 293

$v1
    v1
17 366
18 487
19 423
20 194
21  18
22 476
23 151
24 382

$v1
    v1
25 131
26 245
27  10
28  41
29 248
30 104
31 163
32 187

$v1
    v1
33 335
34  44
35 442
36 362
37 470
38 145
39 384
40 257

哪里l2 ,
dput(l2)
list(v1 = structure(list(v1 = c(444L, 52L, 345L, 48L, 375L, 491L, 
10L, 126L, 231L, 124L, 494L, 476L, 213L, 208L, 35L, 327L, 294L, 
467L, 39L, 295L, 12L, 49L, 201L, 335L, 72L, 204L, 453L, 299L, 
157L, 355L, 380L, 348L, 309L, 117L, 404L, 304L, 222L, 287L, 500L, 
406L, 340L, 166L, 442L, 256L, 354L, 269L, 98L, 245L, 471L, 253L, 
15L, 130L, 434L, 329L, 465L, 18L, 346L, 389L, 185L, 238L)), row.names = c(NA, 
-60L), class = "data.frame"), v1 = structure(list(v1 = c(67L, 
461L, 68L, 420L, 59L, 291L, 391L, 275L, 57L, 354L, 239L, 205L, 
273L, 172L, 345L, 293L, 236L, 304L, 70L, 410L, 91L, 204L, 343L, 
386L, 400L, 482L, 221L, 190L, 340L, 328L, 367L, 36L, 95L, 229L, 
98L, 148L, 255L, 490L, 101L, 480L, 113L, 122L, 330L, 31L, 276L, 
18L, 192L, 243L, 178L, 240L, 297L, 75L, 381L, 144L, 71L, 208L, 
76L, 46L, 146L, 373L)), row.names = c(NA, -60L), class = "data.frame"), 
    v1 = structure(list(v1 = c(344L, 200L, 282L, 236L, 404L, 
    201L, 286L, 185L, 479L, 46L, 32L, 124L, 365L, 297L, 66L, 
    483L, 366L, 487L, 423L, 194L, 18L, 476L, 151L, 382L, 240L, 
    261L, 346L, 345L, 85L, 332L, 179L, 67L, 87L, 415L, 98L, 480L, 
    320L, 307L, 141L, 224L, 27L, 432L, 103L, 23L, 370L, 306L, 
    153L, 78L, 418L, 186L, 459L, 162L, 59L, 484L, 20L, 385L, 
    216L, 116L, 99L, 301L)), row.names = c(NA, -60L), class = "data.frame"), 
    v1 = structure(list(v1 = c(358L, 233L, 343L, 121L, 22L, 230L, 
    461L, 430L, 246L, 19L, 155L, 303L, 197L, 276L, 44L, 264L, 
    102L, 243L, 153L, 385L, 89L, 49L, 360L, 148L, 131L, 245L, 
    10L, 41L, 248L, 104L, 163L, 187L, 5L, 179L, 341L, 322L, 250L, 
    210L, 223L, 103L, 80L, 151L, 263L, 310L, 34L, 275L, 165L, 
    328L, 71L, 364L, 454L, 336L, 249L, 205L, 284L, 419L, 113L, 
    185L, 416L, 298L)), row.names = c(NA, -60L), class = "data.frame"), 
    v1 = structure(list(v1 = c(393L, 346L, 227L, 242L, 61L, 264L, 
    106L, 326L, 278L, 150L, 397L, 398L, 199L, 478L, 430L, 134L, 
    297L, 291L, 341L, 436L, 47L, 94L, 275L, 419L, 448L, 180L, 
    24L, 440L, 135L, 260L, 472L, 158L, 335L, 44L, 442L, 362L, 
    470L, 145L, 384L, 257L, 6L, 333L, 429L, 149L, 62L, 173L, 
    109L, 330L, 492L, 286L, 328L, 178L, 197L, 367L, 282L, 426L, 
    466L, 111L, 123L, 251L)), row.names = c(NA, -60L), class = "data.frame"))

关于r - 从列表中的数据框中提取不同的行集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60056800/

相关文章:

python - 如何使用 r 计算数据框中一组行的相似程度

r - 使用 R 中的 Chartseries 截断 Y 轴

Python Pandas lambda 函数更改列的所有值?

python - 连接两列以进行自定义传递

mysql - 基于重复项的 data.frame 条件求和

r - foreach、doParallel 和随机生成

python - 合并2个数据框在pandas中共享同一列

python - 基于分组创建pandas列

python - 在 python 中过滤具有特定列名的 Pandas 数据框

r - 添加形状时分组哑铃图变得不稳定