Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何随机化数据帧中的字符串_R_Random_Character - Fatal编程技术网

R 如何随机化数据帧中的字符串

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 &

我有一个包含2列的数据框,每个列都是类字符。一列是标识符,第二列由我想随机化的字母组成

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。是的,这就是我的意思:太棒了,这正是我需要的。非常感谢。太棒了,这正是我需要的。非常感谢。