5 个字母 "word" 随机生成
5 letters "word" randomly generated
我想创建一个由 5 个随机生成的字符组成的 10 "words" 向量。例如 c("ASDT","WUIW"...)
目前我正在使用以下脚本,但肯定会有更好的方法来执行此操作
result = list()
for (i in 1:10){
result[i]<-paste(sample(LETTERS, 5, replace=TRUE),collapse="")
}
result<-paste(t(result))
你的代码没有什么根本性的错误,除了它使用了一个循环。
唯一更好的方法是用列表应用函数替换循环(在本例中:replicate
):
replicate(10, paste(sample(LETTERS, 5, replace = TRUE), collapse = ''))
我会采样一次,然后将结果变成 data.frame,可以传递给 paste0
:
set.seed(42)
do.call(paste0, as.data.frame(matrix(sample(LETTERS, 50, TRUE), ncol = 5)))
#[1] "XLXTJ" "YSDVL" "HYZKA" "VGYRZ" "QMCAL" "NYNVY" "TZKAX" "DDXFQ" "RMLXZ" "SOVPQ"
我会创建一个像这个这样的自定义函数,它将接受一个词的大小和你想要的 return
中的词数
WordsGen <- function(n, size){
substring(paste(sample(LETTERS, n * size, replace = TRUE), collapse = ""),
seq(1, (n - 1)*size + 1, size), seq(size, n * size, size))
}
set.seed(1)
WordsGen(10, 5)
## [1] "GJOXF" "XYRQB" "FERJU" "MSZJU" "YFQDG" "KAJWI" "MPMEV" "RUCSK" "VQUON" "UAMTS"
这是stringi
中的一个选项
library(stringi)
set.seed(1)
stri_rand_strings(10, 5, '[A-Z]')
#[1] "GJOXF" "XYRQB" "FERJU" "MSZJU" "YFQDG" "KAJWI" "MPMEV" "RUCSK" "VQUON"
#[10] "UAMTS"
我想创建一个由 5 个随机生成的字符组成的 10 "words" 向量。例如 c("ASDT","WUIW"...)
目前我正在使用以下脚本,但肯定会有更好的方法来执行此操作
result = list()
for (i in 1:10){
result[i]<-paste(sample(LETTERS, 5, replace=TRUE),collapse="")
}
result<-paste(t(result))
你的代码没有什么根本性的错误,除了它使用了一个循环。
唯一更好的方法是用列表应用函数替换循环(在本例中:replicate
):
replicate(10, paste(sample(LETTERS, 5, replace = TRUE), collapse = ''))
我会采样一次,然后将结果变成 data.frame,可以传递给 paste0
:
set.seed(42)
do.call(paste0, as.data.frame(matrix(sample(LETTERS, 50, TRUE), ncol = 5)))
#[1] "XLXTJ" "YSDVL" "HYZKA" "VGYRZ" "QMCAL" "NYNVY" "TZKAX" "DDXFQ" "RMLXZ" "SOVPQ"
我会创建一个像这个这样的自定义函数,它将接受一个词的大小和你想要的 return
中的词数WordsGen <- function(n, size){
substring(paste(sample(LETTERS, n * size, replace = TRUE), collapse = ""),
seq(1, (n - 1)*size + 1, size), seq(size, n * size, size))
}
set.seed(1)
WordsGen(10, 5)
## [1] "GJOXF" "XYRQB" "FERJU" "MSZJU" "YFQDG" "KAJWI" "MPMEV" "RUCSK" "VQUON" "UAMTS"
这是stringi
library(stringi)
set.seed(1)
stri_rand_strings(10, 5, '[A-Z]')
#[1] "GJOXF" "XYRQB" "FERJU" "MSZJU" "YFQDG" "KAJWI" "MPMEV" "RUCSK" "VQUON"
#[10] "UAMTS"