如何关联因子和列表?

时间:2018-08-25 14:42:27

标签: r list sorting

我有很多命名列表。现在,我想根据每个元素中字母“ a”的数量将它们分开。对于瞬间,

library(stringr)

data1 <- c("apple","appreciate","available","account","adapt")
data2 <- c("tab","banana","cable","tatabox","aaaaaaa","aaaaaaaaaaa")
list1 <- list(data1,data2)
names(list1) <- c("a","b")

ca <- lapply(list1, function(x) str_count(x, "a")) #counting letter a
factor1 <- lapply(ca,as.factor) #convert ca to factor

#is that possible to associate factor1 to list1, then I can separate 
#elements depends on the factor1?

#ideal results
result$1 or result[1]
$`1`
$`a`$`1`
[1] "apple"   "account"

$`b`$`1`
[1] "tab"   "cable"

1 个答案:

答案 0 :(得分:0)

使用splitMap,您可以非常接近一行:

Map(split, list1, Map(stringr::str_count, list1, "a"))

$a
$a$`1`
[1] "apple"   "account"

$a$`2`
[1] "appreciate" "adapt"

$a$`3`
[1] "available"


$b
$b$`1`
[1] "tab"   "cable"

$b$`2`
[1] "tatabox"

$b$`3`
[1] "banana"

$b$`7`
[1] "aaaaaaa"

$b$`11`
[1] "aaaaaaaaaaa"

这将首先列出所有“ a”元素,然后列出按“ a”字符数量分组的所有“ b”元素。