如何计算列表中每个元素中唯一字符串的数量

时间:2019-04-15 19:11:56

标签: r string list for-loop unique

我有一个包含许多字符串的列表。我想计算列表中每个元素中唯一字符串的数量。例如:

我的名为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 :(得分:0)

尝试改用lapply

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

[[1]]
[1] 3

[[2]]
[1] 2

[[3]]
[1] 4

希望这会有所帮助!

答案 1 :(得分:0)

这是tidyverse

的一个选项
library(tidyverse)
test %>%
   map_int(n_distinct)
#[1] 3 2 4