【发布时间】:2015-12-01 15:11:52
【问题描述】:
我正在尝试编写一个函数来计算模式的连续实例数。例如,我想要字符串
string<-"A>A>A>B>C>C>C>A>A"
变身
"3 A > 1 B > 3 C > 2 A"
我有一个计算每个字符串实例的函数,见下文。但它并没有达到我想要的排序效果。任何想法或指示?
谢谢,
R
现有功能:
fnc_gen_PathName <- function(string) {
p <- strsplit(as.character(string), ";")
p1 <- lapply(p, table)
p2 <- lapply(p1, function(x) {
sapply(1:length(x), function(i) {
if(x[i] == 25){
paste0(x[i], "+ ", names(x)[i])
} else{
paste0(x[i], "x ", names(x)[i])
}
})
})
p3 <- lapply(p2, function(x) paste(x, collapse = "; "))
p3 <- do.call(rbind, p3)
return(p3)
}
【问题讨论】:
-
你看过
rle()函数吗?如果您将字符串拆分为向量,应该可以正常工作。 -
完美,非常感谢。以前从未听说过该功能,但非常易于使用。