如何用R统计向量中指定长度数值组合的重复次数
R语言统计向量指定长度数值组合的重复次数
方法一:基础R实现(无需额外包)
先定义目标向量和指定的组合长度:
test <- c(1,2,3,4,1,2,3,4,4,4,4,4) window_size <- 4
生成所有符合长度要求的滑动窗口组合,并统计重复次数:
# 生成所有连续的指定长度组合,转成字符串便于统计 combinations <- sapply(1:(length(test) - window_size + 1), function(i) { paste(test[i:(i + window_size - 1)], collapse = " ") }) # 统计每个组合的出现次数 count_result <- table(combinations)
执行后直接输出count_result就能得到:
combinations 1 2 3 4 4 4 4 4 2 1
如果需要结构化的数据框格式,可转换为:
result_df <- as.data.frame(count_result, responseName = "count")
输出的result_df为:
combinations count 1 1 2 3 4 2 2 4 4 4 4 1
方法二:用zoo包简化操作
如果习惯用现成的滑动窗口函数,可借助zoo包:
library(zoo) # 生成滑动窗口组合列表 comb_list <- rollapply(test, window_size, list) # 转换为字符串后统计次数 count_result <- table(sapply(comb_list, paste, collapse = " "))
得到的结果和基础R方法完全一致。
原理说明
核心逻辑是通过滑动窗口遍历向量,每次截取连续的window_size个元素作为一个组合;由于R的table()函数无法直接统计列表类型的组合,因此将每个组合转换为空格分隔的字符串,再进行频次统计。
内容的提问来源于stack exchange,提问作者cucalorda
相关产品推荐
相关产品推荐

