R 如何随机化数据帧中的字符串
我有一个包含2列的数据框,每个列都是类字符。一列是标识符,第二列由我想随机化的字母组成R 如何随机化数据帧中的字符串,r,random,character,R,Random,Character,我有一个包含2列的数据框,每个列都是类字符。一列是标识符,第二列由我想随机化的字母组成 df <- data.frame(identifier=c("number1", "number2", "number3"), values=c("AGLRJMV", "KTKOXSOCOFMTMSOV", "GTSHH")) df$identifier <- as.character(as.factor(df$identifier)) df$values &
df <- data.frame(identifier=c("number1", "number2", "number3"),
values=c("AGLRJMV", "KTKOXSOCOFMTMSOV", "GTSHH"))
df$identifier <- as.character(as.factor(df$identifier))
df$values <- as.character(as.factor(df$values))
它不会随机化字母
我试图为每个字母将第二列拆分为单独的列,但由于列数不同,因此无法再次将这些列合并
所以,我最后想要的是:
identifier values
number1 MVARJGL
number2 OTMCOFMKOSOVKTXS
number3 STHHG
很抱歉,这可能是个显而易见的问题,但我就是想不出来。。如果这个问题已经在其他地方得到了回答,我很高兴被引导到这个问题上来。我们可以将每个字符拆分为值,然后使用sample随机化,最后将字符串粘贴在一起,使它们作为一个单词返回
df$values1 <- sapply(strsplit(df$values,""), function(x)
paste0(sample(x), collapse = ""))
df
# identifier values values1
#1 number1 AGLRJMV GJRMVAL
#2 number2 KTKOXSOCOFMTMSOV OSFKMOKCOXMVOTST
#3 number3 GTSHH HHTGS
我们可以将每个字符拆分为值,然后使用sample进行随机化,最后将字符串粘贴在一起,使它们作为一个单词返回
df$values1 <- sapply(strsplit(df$values,""), function(x)
paste0(sample(x), collapse = ""))
df
# identifier values values1
#1 number1 AGLRJMV GJRMVAL
#2 number2 KTKOXSOCOFMTMSOV OSFKMOKCOXMVOTST
#3 number3 GTSHH HHTGS
使用stringi软件包及其stri_rand_shuffle函数:
require(stringi)
set.seed(1)
values <- c("AGLRJMV", "KTKOXSOCOFMTMSOV", "GTSHH")
stri_rand_shuffle(values)
#[1] "GAJVLRM" "VOTSXMOTFMOKSCKO" "SHTGH"
使用stringi软件包及其stri_rand_shuffle函数:
require(stringi)
set.seed(1)
values <- c("AGLRJMV", "KTKOXSOCOFMTMSOV", "GTSHH")
stri_rand_shuffle(values)
#[1] "GAJVLRM" "VOTSXMOTFMOKSCKO" "SHTGH"
你到底是如何想象得到这个:MVARJGL的?我们可以多次取样而不需要这个。还有其他逻辑吗?@NelsonGon不,我想,OP是想展示我们能得到的众多可能的输出之一。啊!谢谢@RonakShah是有道理的。是的,这就是我的意思:你怎么想象得到这个:MVARJGL?我们可以多次取样而不需要这个。还有其他逻辑吗?@NelsonGon不,我想,OP是想展示我们能得到的众多可能的输出之一。啊!谢谢@RonakShah。是的,这就是我的意思:太棒了,这正是我需要的。非常感谢。太棒了,这正是我需要的。非常感谢。