簡體   English   中英

使用R中的另一個列表對列表中的行進行子設置

[英]subsetting rows from a list using another list in R

我正在嘗試使用R對列表中的行數進行子集化。

我有2個列表,一個具有n行和p列的矩陣,第二個列表具有我需要子集的行數。

mat <- list(a = matrix(rnorm(8*4),8), b = matrix(rnorm(15*4),15), c = matrix(rnorm(7*4),7))
rw <- list(a = 6, b = 7, c = 4)

這兩個列表都具有通用名稱,在上面的示例中,我想為元素保留前6行,對於b前7行和c 4行。

你將如何在R做到這一點

Map一種解決方案:

Map(function(x, y) x[1:y, ], mat, rw)

# $a
# [,1]       [,2]       [,3]       [,4]
# [1,] 1.3331549 -0.6985623 -1.1842788 -0.1496880
# [2,] 0.2096395 -0.2901906  0.4210395  0.9116542
# [3,] 0.1763317  1.3858205 -1.1567526 -1.1794618
# [4,] 1.3596395  0.5815012 -0.3681799 -0.6569447
# [5,] 0.2251352  0.2331387 -1.2509844 -1.1346729
# [6,] 0.6796729  1.1274772  0.3992489  0.2305927
# 
# $b
# [,1]       [,2]       [,3]       [,4]
# [1,]  0.30700748 -1.2173855 -0.3377885 -0.6748974
# [2,]  1.09506443 -0.6142685 -1.1301122 -0.7792081
# [3,] -0.61049306 -1.3414474  0.9771373  1.0191636
# [4,]  0.66687294 -0.5269721  0.9971987 -0.6514121
# [5,]  0.54623236  0.9020964  0.3252700 -0.3925129
# [6,] -0.04848903 -0.5204047  0.3344675 -0.3232105
# [7,] -0.56502719 -0.3743275  2.1760364 -0.2941956
# 
# $c
# [,1]        [,2]      [,3]       [,4]
# [1,] -0.3225609 -0.40126955 -1.787255 -1.5005721
# [2,]  0.3474430 -1.16657015  1.106033  0.3114282
# [3,]  0.4099467 -0.04353555  0.838330  0.3282246
# [4,] -1.4648740  0.51279791  0.198768 -0.3394502

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM