R 无重复项的样本列

R 无重复项的样本列,r,sampling,random-sample,R,Sampling,Random Sample,我目前正在编写一个自定义函数来实现这一点,但我想知道R中是否有一个简单的内置函数可以实现同样的目标 我有如下数据: stringVariable1 stringVariable2 string1 a string1 b string1 d string2 e string2 a string3 b 我想洗牌stringVariable2中的数

我目前正在编写一个自定义函数来实现这一点,但我想知道R中是否有一个简单的内置函数可以实现同样的目标

我有如下数据:

stringVariable1     stringVariable2

string1             a
string1             b
string1             d
string2             e
string2             a
string3             b
我想洗牌stringVariable2中的数据,但我不想重复1中不同的stringVariables

因此这是不可接受的(因为“b”与string1重复):

但这将:

stringVariable1     stringVariable2

string1             b
string1             e
string1             d
string2             a
string2             e
string3             d
因此,本质上,我试图随机化stringVariable2,而不替换不同的stringVariable1。创建自定义函数是实现这一点的唯一方法吗


谢谢

stringVariable2的值是否在stringVariable1的组中重复?如果不是,则可以使用以下内容执行分组排列(d是包含数据的数据帧的名称):


d$perm1depends在性能上。。。例如,您可以洗牌var2,检查重复项,如果需要,可以重新洗牌。但是数据有超过100万行,其中包含大量重复的字符串变量,因此至少获得一个重复项的概率超过99%(我想运行大约10000次)啊,我刚刚注意到这并不是我想要的。例如,使用这种方法,在采样方法之后,“e”永远不会与string1相关联——我希望变量2基本上是随机的,但在每个stringvariable1类别中都不会得到重复。你介意快速看一下吗?通常随机化遵循数据集或实验设置的某些特征。我认为stringVariable1是某种阻塞,但我猜不是。我不能,至少现在,想出一个快速和方便的替代方案,通常能完全实现你的要求。您是否检查了permute软件包中可用的工具(特别是请参见vignette)?它还允许您指定复杂的随机化方案,以满足您的需要。
stringVariable1     stringVariable2

string1             b
string1             e
string1             d
string2             a
string2             e
string3             d
d$perm1<-as.vector(unlist(tapply(d$stringVariable2, d$stringVariable1, sample)))