在R中生成长度为11的3.000.000字符串

时间:2018-10-28 18:34:13

标签: r memory dummy-variable dummy-data random-data

显然,如果我尝试这样做:

# first grab the package
install.packages("stringi")
library(stringi)

# and then try to generate some serious dummy data
my_try <- as.vector(sample(1111111111:99999999999,3000000,replace=T))

R会说NOPE,抱歉:

Error: cannot allocate vector of size 736.8 Gb

我应该购买更多的RAM *吗?

*这是个玩笑,但我非常感谢您的帮助!

编辑: 所需的输出是一个包含20个变量和3x10 ^ 6行的数据帧。一些列/变量应该是字符串,一些整数。长度从2到12。

1 个答案:

答案 0 :(得分:2)

错误不是来自对300万个值进行采样,而是来自试图创建大约900亿个值1111111111:99999999999的总体来进行采样。如果要从该范围进行采样,请从1:88888888889范围进行采样,并使用

添加11111111110
sample(88888888889, 3000000,replace=TRUE) + 11111111110

最后不需要as.vector,它已经是向量。

P.S。我相信在R-devel中,可以更有效地存储1111111111:99999999999范围(基本上只是限制),但是我不知道是否可以修改sample()来使用它。