所以我想知道如何从R中的列表中随机提取一个字符串并使用NO REPLACEMENT直到列表为空。 写
sample(x, size=1, replace=FALSE)
没有帮助我,因为在列表变空之前,字符串被多次提取。
亲切的问候
答案 0 :(得分: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
}
}
答案 1 :(得分:0)
sample(x)
您不能在重复呼叫时使用size = 1,并且希望它知道不要抓取之前选择的值。您必须一次获取所需的所有值。此代码将随机播放您的数据,然后您可以在需要时获取第一个元素。然后下次你需要抓住第二个......等等。