Сохранение имен элементов списка после поднабора в R - PullRequest
2 голосов
/ 10 мая 2019

Предположим, у меня есть список 2 с именем data.frame s.Имя первого data.farme равно Study1, а имя второго data.frame равно Study2 (как показано ниже).

Когда я использую subset ниже, я теряю Study1или Study2 которые являются именами моих data.frames?

Мне было интересно, есть ли способ подмножества из этих data.frames, сохраняя их имена?

a <- list(Study1 = data.frame(d = 6:8, long = c(T, F, T)), Study2 = data.frame(d = 9:11, long = c(T, T, F)) )

subset(a[[1]], long == T)

1 Ответ

2 голосов
/ 10 мая 2019

Мы можем использовать параметр subset, равный subset, чтобы отфильтровать строки по столбцу long. Поскольку «long» равно logical, в ==

нет необходимости
lapply(a, subset, subset = long)

В дополнение к условию if/else другой параметр - swtich, если имеется много значений

dd <- function(a, val = "long") {
      switch(val,
            "long" = lapply(a, subset, subset = long),
            "short" = lapply(a, subset, subset = !long)
      )


}

dd(a1, "short")

Данные

a1 <- list(Study1 = data.frame(d = 6:8, long = c(T, F, T)),
           Study2 = data.frame(d = 9:11, long = c(T, T, F)) )
...