2016-06-09 1 views
1

У меня есть список (например, A), который содержит количество элементов. Каждый элемент имеет тот же размер (например, 100 x 200). У меня есть вектор idx, длина которого равна 100, то же количество строк, что и элементы в списке. Я хочу создать новый список, который является подмножеством списка A, например, с idx == 1. Я использовал lapply и, похоже, работает, но я потерял имена элементов в списке. Можете ли вы предложить лучший способ достичь этого? Большое спасибоКак получить подмножество элементов в списке без потери имени элемента?

# Generate a list A 
A = list() 
for (i in 1:26){ 
    A[[LETTERS[i]]] = matrix(runif(100*200,0,1),100,200) 
} 
# Generate a vector with 100 elements with integers between 1 and 5 
idx = sample(1:5, 100, replace=T) 
# Create subset list B from list A, where rows are idx==1 
B = lapply(1:26, function(x) A[[x]][idx==1,]) 
# However, in list B, I have lost all the element names 
+0

Try 'lapply (A, функция (x) x [idx == 1,]) ' – akrun

+0

@akrun - Спасибо – Lafayette

ответ

1

Мы должны петли через list и подмножество его

B1 <- lapply(A, function(x) x[idx==1,]) 

Проверка, если результаты от ОП такая же

names(B) <- names(A) 
identical(B, B1) 
#[1] TRUE 

 Смежные вопросы

  • Нет связанных вопросов^_^