【发布时间】:2018-05-21 05:06:18
【问题描述】:
我正在尝试计算由“>”分隔的大量字符列表中的所有序列,但只计算彼此直接相邻的组合。
例如给定字符向量:
[1]Social>PaidSearch>PaidSearch>PaidSearch>PaidSearch>PaidSearch>PaidSearch>PaidSearch>PaidSearch>PaidSearch>PaidSearch>OrganicSearch>OrganicSearch>OrganicSearch
[2]Referral>Referral>Referral
我可以运行以下行来检索包含 2 个字符的所有组合:
split_fn <- sapply(p , strsplit , split = ">", perl=TRUE)
split_fn <- sapply(split_fn, function(x) paste(head(x,-1) , tail(x,-1) , sep = ">") )
返回:
[[1]]
[1] "Social>PaidSearch" "PaidSearch>PaidSearch" "PaidSearch>PaidSearch" "PaidSearch>PaidSearch" "PaidSearch>PaidSearch"
[6] "PaidSearch>PaidSearch" "PaidSearch>PaidSearch" "PaidSearch>PaidSearch" "PaidSearch>PaidSearch" "PaidSearch>PaidSearch"
[11] "PaidSearch>OrganicSearch" "OrganicSearch>OrganicSearch" "OrganicSearch>OrganicSearch"
[[2]]
[1] "Referral>Referral" "Referral>Referral"
我的数据中所有可能的 2 个字符序列(按顺序拆分)
我知道想要 3 个字符的所有可能结果。
例如
"Social>PaidSearch>PaidSearch" "PaidSearch>PaidSearch>PaidSearch"..."Referral>Referral>Referral"
尝试使用
unlist(lapply(strsplit(p, split = ">"), function(i) combn(sort(i), 3, paste, collapse='>')))
但它会返回所有组合,包括那些不直接跟随的组合。
我也不希望它返回第一行中的最后一个值与第二行中的第一个值等的组合。
【问题讨论】:
标签: r count combinations sapply strsplit