R 如何将字符串拆分为3个重叠集
如果我有多个字符串,如:R 如何将字符串拆分为3个重叠集,r,R,如果我有多个字符串,如: skhdsfiiuwkncyeuhrsl sdskkjheocbsill sldkjflsdkjb 如何将输出编程为重叠的三元组,例如,我希望它输出: skh, khd, hds, ..., rsl sds, dsk, skk, ..., ill sld, ldk, dkj, ..., kjb 子字符串工作: x = c("skhdsfiiuwkncyeuhrsl", "sdskkjheocbsill", "sldkjflsdkjb", "ab") n = 3 la
skhdsfiiuwkncyeuhrsl
sdskkjheocbsill
sldkjflsdkjb
如何将输出编程为重叠的三元组,例如,我希望它输出:
skh, khd, hds, ..., rsl
sds, dsk, skk, ..., ill
sld, ldk, dkj, ..., kjb
子字符串
工作:
x = c("skhdsfiiuwkncyeuhrsl", "sdskkjheocbsill", "sldkjflsdkjb", "ab")
n = 3
lapply(x, function(z)
if ((nc <- nchar(z)) >= n)
substring(z, seq(1, nc - n + 1), seq(n, nc))
else
character(0)
)
子字符串
工作:
x = c("skhdsfiiuwkncyeuhrsl", "sdskkjheocbsill", "sldkjflsdkjb", "ab")
n = 3
lapply(x, function(z)
if ((nc <- nchar(z)) >= n)
substring(z, seq(1, nc - n + 1), seq(n, nc))
else
character(0)
)
从中汲取灵感,以下是一行:
strings <- c("skhdsfiiuwkncyeuhrsl",
"sdskkjheocbsill",
"sldkjflsdkjb")
sapply(strings, function(x) substring(x, seq(1,nchar(x)-2,1), seq(3,nchar(x),1)))
# $skhdsfiiuwkncyeuhrsl
# [1] "skh" "khd" "hds" "dsf" "sfi" "fii" "iiu" "iuw" "uwk" "wkn" "knc" "ncy" "cye" "yeu" "euh"
# [16] "uhr" "hrs" "rsl"
# $sdskkjheocbsill
# [1] "sds" "dsk" "skk" "kkj" "kjh" "jhe" "heo" "eoc" "ocb" "cbs" "bsi" "sil" "ill"
# $sldkjflsdkjb
# [1] "sld" "ldk" "dkj" "kjf" "jfl" "fls" "lsd" "sdk" "dkj" "kjb"
strings从中汲取灵感,这里有一句话:
strings <- c("skhdsfiiuwkncyeuhrsl",
"sdskkjheocbsill",
"sldkjflsdkjb")
sapply(strings, function(x) substring(x, seq(1,nchar(x)-2,1), seq(3,nchar(x),1)))
# $skhdsfiiuwkncyeuhrsl
# [1] "skh" "khd" "hds" "dsf" "sfi" "fii" "iiu" "iuw" "uwk" "wkn" "knc" "ncy" "cye" "yeu" "euh"
# [16] "uhr" "hrs" "rsl"
# $sdskkjheocbsill
# [1] "sds" "dsk" "skk" "kkj" "kjh" "jhe" "heo" "eoc" "ocb" "cbs" "bsi" "sil" "ill"
# $sldkjflsdkjb
# [1] "sld" "ldk" "dkj" "kjf" "jfl" "fls" "lsd" "sdk" "dkj" "kjb"
stringsaa到目前为止你都尝试了什么?类似于sapply(1:(nchar(x)-2),function(i)substring(x,i,i+2))
也许吧?到目前为止你试过什么?类似于sapply(1:(nchar(x)-2),函数(i)子字符串(x,i,i+2))
也许?@Frank Thank,复制了错误的一行--我更正了这些错误:)这怎么可以用来制作四个或五个呢?@Frank Thank,复制了错误的一行--我更正了这些错误:)这怎么可以用来制作四个或五个呢?