【问题标题】:String simulation with R [closed]使用 R 进行字符串模拟 [关闭]
【发布时间】:2016-02-23 16:41:16
【问题描述】:

我是 R 新手。 例如我想知道如何模拟字符串数据

> ABCDAABCDRFSSAAABE 

> ABCDDEDEEEF

> AABBCCDDDDEABCEDFABD 

> ...

【问题讨论】:

    标签: r simulation


    【解决方案1】:

    我会使用base R 函数来随机化所选字母和样本数量。您可以选择输出多少个向量。向量LETTERS 是大写字母字符的内置向量。 :

    replicate(3, sample(LETTERS, size=sample(length(LETTERS))))
    

    【讨论】:

    • 稍微解释一下lettersLETTERS 在R 中的作用。
    • 据我从 OP 的帖子中了解到,他/她需要一个字符串。无论如何,又是一次不公平的投票。
    • 我相信 OP 正在寻找多个向量。这就是为什么他们向您提到您的第一个解决方案只产生了一个。其次,人们可以随心所欲地投票。您不是答案优劣的最终评判者。
    • 是的,OP 提到了这一点,我更正了它。但是,它仍然是一个字符串,而不是来自 OP 帖子的向量。无论如何,不​​公平的投票就是不公平的投票。对此毫无疑问。我不是最终的评委,但你可以做一些基准测试,这至少会带来一些好处。
    • 另外,请从我的其他帖子中删除您讨厌的 cmets,好吗。
    【解决方案2】:

    我们可以使用来自library(stringi)stri_rand_strings

    library(stringi)
    stri_rand_strings(1, 8, '[A-Z]')
    #[1] "PZFBVYVJ"
    

    如果我们需要多个不同数量的字符串,只需更改nlength

    stri_rand_strings(2, sample(8:16, 2, replace=FALSE),'[A-Z]')
    #[1] "XABWTQRDKCPSHKY" "SWPIARRENKCHHO" 
    

    根据文档的用法是

    stri_rand_strings(n, 长度, 模式 = "[A-Za-z0-9]")

    使用stringi 函数的一个优势是速度。这会非常快。关于另一个解决方案的另一件事是这不是循环的。 replicate 正在使用 sapply,这是一个循环。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      相关资源
      最近更新 更多