gpt4 book ai didi

r - 如何根据 R 中的位置向量替换字符串向量中的字符?

转载 作者:行者123 更新时间:2023-12-02 07:59:30 25 4
gpt4 key购买 nike

举个例子:

set.seed(123)
library(stringi)
df<-data.frame(p=sprintf("%s", stri_rand_strings(11, 11, '[A-Z]')),
n=sample(1:10, 11, 1),
s=sprintf("%s", stri_rand_strings(11, 1, '[A-Z]')))
df
p n s
1 GPCMCEHPTEW 3 X
2 STDJRNJGBGX 8 P
3 VTEDZLMEPHF 6 L
4 RHVCVLTRLQA 4 Y
5 FSFVIRYDDRL 7 S
6 VZBLSCZGBRU 10 K
7 JJHCJENNYIM 8 A
8 CWKTELUBVHJ 4 O
9 IANRXAZHYRL 10 M
10 VBTJVNHUCVH 9 W
11 TZCWUKIFOXN 6 V

我想要的是创建一个新列 new_p,其中 p 中位置 n 的字符被 s< 替换。因此第一个 df$new_p[1] 应该是 GPXMCEHPTEW

最佳答案

一个选项是substring

for(i in seq_len(nrow(df)))  substring(df$p[i], df$n[i], df$n[i]) <- df$s[i]


df
# p n s
#1 GPXMCEHPTEW 3 X
#2 STDJRNJPBGX 8 P
#3 VTEDZLMEPHF 6 L
#4 RHVYVLTRLQA 4 Y
#5 FSFVIRSDDRL 7 S
#6 VZBLSCZGBKU 10 K
#7 JJHCJENAYIM 8 A
#8 CWKOELUBVHJ 4 O
#9 IANRXAZHYML 10 M
#10 VBTJVNHUWVH 9 W
#11 TZCWUVIFOXN 6 V

我们还可以利用 rawToChar/charToRaw

df$p <- mapply(function(x, y, z) rawToChar(replace(charToRaw(x), y, 
charToRaw(z))), df$p, df$n, df$s)

数据

df <- structure(list(p = c("GPCMCEHPTEW", "STDJRNJGBGX", "VTEDZLMEPHF", 
"RHVCVLTRLQA", "FSFVIRYDDRL", "VZBLSCZGBRU", "JJHCJENNYIM", "CWKTELUBVHJ",
"IANRXAZHYRL", "VBTJVNHUCVH", "TZCWUKIFOXN"), n = c(3L, 8L, 6L,
4L, 7L, 10L, 8L, 4L, 10L, 9L, 6L), s = c("X", "P", "L", "Y",
"S", "K", "A", "O", "M", "W", "V")), class = "data.frame",
row.names = c("1",
"2", "3", "4", "5", "6", "7", "8", "9", "10", "11"))

关于r - 如何根据 R 中的位置向量替换字符串向量中的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59325140/

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