【问题标题】:How to count the number of unique strings in each element of a list如何计算列表的每个元素中唯一字符串的数量
【发布时间】:2019-09-05 19:54:03
【问题描述】:

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

我的名为 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 没有这样的索引

【问题讨论】:

  • sapply(test, function(element) {length(unique(element))}) 试试这个。
  • 可以使用test_length &lt;- rep(NA_integer_,length(test)) for(i in 1:length(test)){ test_length[i] &lt;- length(unique(test[[i]])) }等for循环
  • 谢谢!这工作得很好:)
  • 另一个精简选项:lengths(Map(unique, test))
  • 克里杰克逊,你的建议给出了以下错误:错误:“test_length

标签: r string list for-loop unique


【解决方案1】:

尝试改用lapply

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

[[1]]
[1] 3

[[2]]
[1] 2

[[3]]
[1] 4

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    这是tidyverse的一个选项

    library(tidyverse)
    test %>%
       map_int(n_distinct)
    #[1] 3 2 4
    

    【讨论】:

      猜你喜欢
      • 2021-10-13
      • 1970-01-01
      • 2022-10-15
      • 2021-07-25
      • 2021-07-05
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      相关资源
      最近更新 更多