Как получить доступ к указанным c столбцам и строкам матриц, расположенным в списке? (в R) - PullRequest
0 голосов
/ 22 января 2020

Я довольно знаком с R, но я не могу понять это. Я создал следующий список матриц:

f=numeric(0)
popM<-list()
popF<-list()
for(i in 1:10){

m<-matrix(sample(c(-1,0,0,1),20,replace=T),ncol=2)
popM[[i]]<-m
}

Теперь у меня есть список из 10 матриц, и я хочу получить доступ к конкретным c элементам каждой из них. Например, мне нужно получить доступ к первым 10 элементам каждого из них. Я могу сделать это один за другим с

popM[[1]][1:5,1:2]

Но как я могу одновременно получить доступ к первым десяти элементам всех моих десяти матриц? Спасибо

Ответы [ 2 ]

1 голос
/ 22 января 2020

Использование lapply():

lapply(popM, "[", 1:5, 1:2) # short for lapply(popM, function(x) x[1:5, 1:2])
0 голосов
/ 22 января 2020

Как предложил sindri_baldur, вы можете использовать lapply. Вы также можете просто создать тензор / массив, а не список матриц, и затем индексировать его напрямую.

a <- array(data = sample(c(-1, 0, 0, 1), 200, replace=TRUE), dim = c(10,2,10))
a[1:5, 1:2, ]
# , , 1
# 
#      [,1] [,2]
# [1,]    1    0
# [2,]    0    0
# [3,]    1   -1
# [4,]    0    0
# [5,]    0    0
# 
# , , 2
# 
#      [,1] [,2]
# [1,]    0   -1
# [2,]    0    1
# [3,]    1    0
# [4,]    1    0
# [5,]    1    0
# 
# , , 3
# 
#      [,1] [,2]
# [1,]    0   -1
# [2,]    0    0
# [3,]    0   -1
# [4,]    1    0
# [5,]    1   -1
# 
# , , 4
# 
#      [,1] [,2]
# [1,]    1    0
# [2,]    0    0
# [3,]   -1    0
# [4,]    1   -1
# [5,]    1    0
# 
# , , 5
# 
#      [,1] [,2]
# [1,]    0    1
# [2,]    0    1
# [3,]    0    1
# [4,]   -1    0
# [5,]   -1    0
# 
# , , 6
# 
#      [,1] [,2]
# [1,]    1    0
# [2,]   -1    1
# [3,]   -1    0
# [4,]    0    1
# [5,]    0    1
# 
# , , 7
# 
#      [,1] [,2]
# [1,]    0   -1
# [2,]    0    0
# [3,]    1    1
# [4,]   -1   -1
# [5,]    0    1
# 
# , , 8
# 
#      [,1] [,2]
# [1,]    0    0
# [2,]    0    0
# [3,]    0   -1
# [4,]   -1    0
# [5,]    1    0
# 
# , , 9
# 
#      [,1] [,2]
# [1,]    1    0
# [2,]    1    0
# [3,]    0   -1
# [4,]    1   -1
# [5,]    1   -1
# 
# , , 10
# 
#      [,1] [,2]
# [1,]   -1    1
# [2,]    1    0
# [3,]    0    0
# [4,]    0    1
# [5,]    1   -1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...