提问人:Andrea 提问时间:9/14/2023 最后编辑:divibisanAndrea 更新时间:9/14/2023 访问量:35
如何创建一个向量并基于另一个向量递增它?
How to create a vector and increment it based on another vector?
问:
假设我有以下重复字母的向量:
a = rep(LETTERS, 5)[3:130]
如下所示:
“C” “D” “E” “F” “G” “H” “I” “J” “K” “L” “M” “N” “O” “P” “Q” “R” “S” “T” “U” “V” “W” “X” “Y” “Z” “A” “B” “C” “D” “E” “F” “G” “H” “I” “J” “K” “L” “M” “N” “O” “P” “Q” “R” “S” “T” “U” “V” “W” “X” “Y” “Z” “A” “B” ...
我想创建第二个相同长度的数值向量,该向量从变量“n”开始,当 a 包含“A”(即下一个字母表)时增加 1。
n = 45
它应该看起来像这样:
45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 47 47 ...
我知道我可以通过以下内容找到这些更改的索引:
which(a == "A")
25 51 77 103
但我不确定有没有有效的方法来做到这一点。
答:
3赞
Gregor Thomas
9/14/2023
#1
a = rep(LETTERS, 5)[3:130]
n = 45
n + cumsum(a == "A")
# [1] 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 46 46 46 46 46 46 46 46
# [33] 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 46 47 47 47 47 47 47 47 47 47 47 47 47 47 47
# [65] 47 47 47 47 47 47 47 47 47 47 47 47 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48
# [97] 48 48 48 48 48 48 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
1赞
TarJae
9/14/2023
#2
如果要使用:which
a = rep(LETTERS, 5)[3:130]
n = 45
indices <- which(a == "A")
result <- rep(n, length(a))
for (idx in indices) {
result[idx:length(a)] <- result[idx:length(a)] + 1
}
result
[1] 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45 45
[19] 45 45 45 45 45 45 46 46 46 46 46 46 46 46 46 46 46 46
[37] 46 46 46 46 46 46 46 46 46 46 46 46 46 46 47 47 47 47
[55] 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47 47
[73] 47 47 47 47 48 48 48 48 48 48 48 48 48 48 48 48 48 48
[91] 48 48 48 48 48 48 48 48 48 48 48 48 49 49 49 49 49 49
[109] 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49 49
[127] 49 49
评论