Как посчитать количество уникальных строк в каждом элементе списка - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть список с количеством строк. Я хотел бы посчитать количество уникальных строк в каждом элементе списка. Например:

Мой список с именем test выглядит так:

test <- list(
  c("X", "Y", "Z", "X"),
  c("W", "X", "X"), 
  c("Z", "W",  "Y", "X", "Z", "Z")
)

Я хотел бы вывод, который может сказать мне что-то вроде:

[[1]] 3
[[2]] 2
[[3]] 4

Я могу легко посчитать это для каждого отдельного элемента, используя следующий код:

length(unique(test[[1]]))

Однако я не уверен, как автоматизировать это для большого списка. Я попытался создать цикл for, как показано ниже, но получаю следующую ошибку:

test_length <- for(i in test){length(unique(test[[i]]))}

Ошибка в тесте [[i]]: на уровне 1

такого индекса нет

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вот один вариант с tidyverse

library(tidyverse)
test %>%
   map_int(n_distinct)
#[1] 3 2 4
0 голосов
/ 15 апреля 2019

Попробуйте использовать lapply вместо

> lapply(test, function(x) length(unique(x)))

[[1]]
[1] 3

[[2]]
[1] 2

[[3]]
[1] 4

Надеюсь, это поможет!

...