r - 如何在 r 中的字符向量上对步骤 2 的滑动窗口进行排序

标签 r vector character sequence

我知道如何编码以在字符向量中使用步骤 1 对 3 的滑动窗口进行排序,但步骤 2 是否需要 seq 函数?

所以对于第 1 步:

v <- c("ace", "king", "queen", "jack", "joker")

for(i in 1:3) {
    print(paste(v[i], v[i + 1], v[i + 2]))
}
## ace king queen
## king queen jack
## queen jack joker 

我如何修改它以使其步长为 2,即获取输出:

## ace king queen
## queen jack joker 

最佳答案

我们可以使用 data.table 中的 shift 来实现此目的,其中 type='lead' 并将 'n' 指定为 vector 序列从 0 到 2

library(data.table)
do.call(rbind, shift(vector, 0:2, type = "lead"))[,1:3]
#     [,1]    [,2]    [,3]   
#[1,] "ace"   "king"  "queen"
#[2,] "king"  "queen" "jack" 
#[3,] "queen" "jack"  "joker"

如果我们想要第二个序列,则使用n = c(0, 2)

do.call(rbind, shift(vector, c(0, 2), type = "lead"))[, 1:3]
#     [,1]    [,2]   [,3]   
#[1,] "ace"   "king" "queen"
#[2,] "queen" "jack" "joker"

或者我们可以使用 zoo 中的 rollapply

library(zoo)
rollapply(vector, 3, FUN = I)[c(TRUE, FALSE),]
#     [,1]    [,2]   [,3]   
#[1,] "ace"   "king" "queen"
#[2,] "queen" "jack" "joker"

或者仅使用基础R

apply(embed(vector, 3), 1, rev)[c(TRUE, FALSE),]
#     [,1]    [,2]   [,3]   
#[1,] "ace"   "king" "queen"
#[2,] "queen" "jack" "joker"

数据

vector <- c('ace', 'king', 'queen', 'jack', 'joker')

关于r - 如何在 r 中的字符向量上对步骤 2 的滑动窗口进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43798887/

相关文章:

C++ - 从函数返回 vector

r - 从 data.frame 名称向量创建 data.frame 列表

R 在尝试在 Mac 上绘图时卡住

c++ - 二维随机单位 vector

C++ vector 排序奇偶留

css - 如何在整个页面中居中对齐特定字符?

R大数据框与因子在子集时不会缩小

unix - 如何从命令行执行可移植、可读和可管道化的逐字符差异?

r - 从 R 中的 coxph 中提取 pvalues 和 se(coef)

r - 从列因子强制列名称并填充