【发布时间】: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 <- rep(NA_integer_,length(test)) for(i in 1:length(test)){ test_length[i] <- length(unique(test[[i]])) }等for循环 -
谢谢!这工作得很好:)
-
另一个精简选项:
lengths(Map(unique, test)) -
克里杰克逊,你的建议给出了以下错误:错误:“test_length
标签: r string list for-loop unique