gpt4 book ai didi

r - 编码 R 中向量中元素的变化

转载 作者:行者123 更新时间:2023-12-01 09:50:52 25 4
gpt4 key购买 nike

给定向量vec:

[1] 1 1 1 1 1 0 2 0 0 0 1 1 3 0

我想要另一个向量来编码 vec 中元素的变化。我想要这样的结果:

[1] "A" "A" "A" "A" "A" "B" "C" "D" "D" "D" "E" "E" "F" "G"

如果我们到达 Z,我们从 AABB、...、ZZ 开始, AAA, BBB, ... 等等。

最佳答案

我们可以使用 data.table 中的 rleid

library(data.table)
z1[rleid(vec)]
#[1] "A" "A" "A" "A" "A" "B" "C" "D" "D" "D" "E" "E" "F" "G"

或者用'z2'

z2[rleid(vec)]     
#[1] "A" "A" "A" "A" "A" "B" "C" "D" "D" "D" "E" "E" "F" "G"

或者使用base R

 z1[cumsum(c(TRUE, diff(vec)!=0))]
#[1] "A" "A" "A" "A" "A" "B" "C" "D" "D" "D" "E" "E" "F" "G"

z1[inverse.rle(within.list(rle(vec), values <- seq_along(values)))]

数据

vec <- c(1, 1, 1, 1, 1, 0, 2, 0, 0, 0, 1, 1, 3, 0)
z1 <- unlist(sapply(1:3, function(i) do.call(paste0,
expand.grid(rep(list(LETTERS), i)))))
z2 <- c(sapply(1:3, function(i) do.call(paste0, replicate(i,
LETTERS, simplify=FALSE))))

关于r - 编码 R 中向量中元素的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38037555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com