计数列表中的重复并将它们存储为倍数
Count repeats in a list and store them as a multiple
我有一个列表,它看起来像这样(ID 是列表中每个元素的名称,分数是值)。
问题是某些元素包含重复值。例如:对于ID = 8,得分为:1, 1, 2, 4.
我希望能够计算是否有重复并存储重复的次数。在这种情况下:1x2, 2, 4.
我试过:
str_count(patient.variants[[8]], "1")
但这只是 returns:
1, 1, 0, 0.
示例数据
list("1" = c("1", "2", "2"), "2" = c("1", "1", "2", "3"), "3" = c("1", "1", "2", "2"))
你可以试试
lapply(lst, \(x) {
tab <- table(x)
unname(ifelse(tab > 1, paste(names(tab), tab, sep = "x"), names(tab)))
})
# $`1`
# [1] "1" "2x2"
#
# $`2`
# [1] "1x2" "2" "3"
#
# $`3`
# [1] "1x2" "2x2"
数据
lst <- list("1" = c("1", "2", "2"),
"2" = c("1", "1", "2", "3"),
"3" = c("1", "1", "2", "2"))
选项tapply
lapply(lst1, \(x) unname(tapply(x, x, FUN = function(x)
if(length(x) > 1) paste(x[1], length(x), sep = "X") else x)))
$`1`
[1] "1" "2X2"
$`2`
[1] "1X2" "2" "3"
$`3`
[1] "1X2" "2X2"
我有一个列表,它看起来像这样(ID 是列表中每个元素的名称,分数是值)。
问题是某些元素包含重复值。例如:对于ID = 8,得分为:1, 1, 2, 4.
我希望能够计算是否有重复并存储重复的次数。在这种情况下:1x2, 2, 4.
我试过:
str_count(patient.variants[[8]], "1")
但这只是 returns: 1, 1, 0, 0.
示例数据
list("1" = c("1", "2", "2"), "2" = c("1", "1", "2", "3"), "3" = c("1", "1", "2", "2"))
你可以试试
lapply(lst, \(x) {
tab <- table(x)
unname(ifelse(tab > 1, paste(names(tab), tab, sep = "x"), names(tab)))
})
# $`1`
# [1] "1" "2x2"
#
# $`2`
# [1] "1x2" "2" "3"
#
# $`3`
# [1] "1x2" "2x2"
数据
lst <- list("1" = c("1", "2", "2"),
"2" = c("1", "1", "2", "3"),
"3" = c("1", "1", "2", "2"))
选项tapply
lapply(lst1, \(x) unname(tapply(x, x, FUN = function(x)
if(length(x) > 1) paste(x[1], length(x), sep = "X") else x)))
$`1`
[1] "1" "2X2"
$`2`
[1] "1X2" "2" "3"
$`3`
[1] "1X2" "2X2"