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

时间:2019-07-19 12:36:30

标签: 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 <- as.character(as.factor(df$values))

我无法将字母随机化,因为R不会将它们视为单个字符而是一个字符串。所以当我尝试

sample(df[,2]) 

它不会随机化字母。

我尝试将每个字母的第二列拆分为单个列,但是由于列数不相同,所以我无法再次将这些列重新合并。

所以,我最终想要得到的是以下内容:

identifier values 
number1    MVARJGL
number2    OTMCOFMKOSOVKTXS
number3    STHHG

很抱歉,这可能是一个显而易见的问题,但是我无法弄清楚。.如果该问题已经在其他地方得到回答,我很乐意针对该问题。

2 个答案:

答案 0 :(得分:3)

使用Exception in thread "main" java.lang.NullPointerException at java.desktop/java.awt.color.ICC_Profile.getProfileDataFromStream(ICC_Profile.java:1034) at java.desktop/java.awt.color.ICC_Profile.getInstance(ICC_Profile.java:1016) at org.apache.pdfbox.pdmodel.graphics.color.PDOutputIntent.configureOutputProfile(PDOutputIntent.java:112) at org.apache.pdfbox.pdmodel.graphics.color.PDOutputIntent.<init>(PDOutputIntent.java:49) at src.Kairos.CreatePDFA.doIt(CreatePDFA.java:124) at src.Kairos.CreatePDFA.main(CreatePDFA.java:153) 包及其stringi函数:

stri_rand_shuffle

答案 1 :(得分:2)

我们可以分割values中的每个字符,然后使用sample来随机化字符串,最后将paste的字符串放在一起,以将它们作为一个单词重新获得。

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