R语言技术问询:固定字母序列中G的位置,打乱其余字母后插回G
解决方案
你可以通过以下步骤把G插回原位置,完整代码如下:
sequence <- "MGGGRYSGTK" # 找到所有G的位置 G_positions <- which(strsplit(sequence, "")[[1]] == "G") # 移除G并打乱剩余字符 sequence_no_G <- gsub("G", "", sequence) shuffled_chars <- sample(strsplit(sequence_no_G, "")[[1]]) # 创建结果向量,先初始化空位置 result <- character(nchar(sequence)) # 填充G到原位置 result[G_positions] <- "G" # 填充打乱后的非G字符到剩余位置 result[-G_positions] <- shuffled_chars # 合并成最终序列 final_sequence <- paste(result, collapse = "") final_sequence
代码说明
- 修正了
G_positions的获取逻辑:原代码直接用sequence == "G"会报错,因为字符串无法直接和单个字符做逐位比较,需要先通过strsplit把字符串拆成字符向量再判断。 - 创建与原序列长度一致的空字符向量
result,先将所有G放回原本的位置。 - 剩余的空位(即非G的原位置)用打乱后的非G字符依次填充,最后合并成完整的目标字符串。
内容的提问来源于stack exchange,提问作者Emma Knowling
相关产品推荐
相关产品推荐

