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