R 从列表中随机抽取,无需替换

R 从列表中随机抽取,无需替换,r,list,random,extract,R,List,Random,Extract,所以我想知道如何从R中的列表中随机抽取一个字符串,直到列表为空为止,不进行替换。 写 sample(x,size=1,replace=FALSE) 这对我没有帮助,因为在列表变空之前,字符串被多次提取 问候 sample(x) 您不能在重复调用时使用size=1,并期望它知道不获取以前选择的值。您必须一次性获取所有想要的值。此代码将洗牌您的数据,然后您可以在需要时获取第一个元素。下一次你需要什么的时候,抓住第二个。。。等等 在每次迭代中,将拾取一个列表元素,并从此元素中删除一个值。如果只剩下一

所以我想知道如何从R中的列表中随机抽取一个字符串,直到列表为空为止,不进行替换。 写

sample(x,size=1,replace=FALSE)

这对我没有帮助,因为在列表变空之前,字符串被多次提取

问候

sample(x)

您不能在重复调用时使用size=1,并期望它知道不获取以前选择的值。您必须一次性获取所有想要的值。此代码将洗牌您的数据,然后您可以在需要时获取第一个元素。下一次你需要什么的时候,抓住第二个。。。等等

在每次迭代中,将拾取一个列表元素,并从此元素中删除一个值。如果只剩下一个值,列表元素将被删除

x <- list(a = "bla", b = c("ble", "bla"), c = "bli")
while (length(x) > 0) {
  s <- sample(x, size = 1)
  column <- x[[names(s)]]
  value <- sample(unlist(s, use.names = FALSE), size = 1)

  list_element_without_value <- subset(column, column != value)

  x[[names(s)]] <- if (length(list_element_without_value) == 0) {
    NULL
  } else {
    list_element_without_value
  }
}
x0){

s请提供一个小样本数据集来说明您的问题。是的,您是对的,我知道。我的观点是尝试删除提取的值,但我失败了,因为列表是一个向量,并且使用plyr中的“which”,我无法子集说明which(x$column name!=“提取的值”).有什么提示吗?我的提示是问你为什么一开始就这样做?为什么不只是洗牌列表,然后按顺序选择你想要的值?这正是我的意思。非常感谢!我用一个不同的、不那么花哨的代码解决了这个问题,下次我会检查这个!