这是我的dataframe / data.table,显示了人们已经吃过的东西以及我的目标字段NextItem
,这是他们可能吃的下一个随机项目(未吃完)
library(data.table)
dt <- read.table(text='
Name ItemEaten NextItem
John rice banana
John butter banana
Sarah bread apple
Vinny apple coke
',header=T)
setDT(dt)
这个载体x
是我的食物世界:
x<- c("apple","pepsi","rice","coke","banana","butter","bread")
NextItem
字段应仅包含x
向量中尚未被给定个体吃过的食物项目(不在ItemEaten
字段中)。例如,John已经吃过rice & butter
,这就是为什么John应该拥有NextItem
字段中剩下的五个食物中的一个。我试过了dt[,NextItem:= sample(x- ItemEaten,1),by=Name]
答案 0 :(得分:2)
感谢所有上述评论者的贡献,我能够找到解决问题的方法。以下代码可以完美地完成工作。
dt[, NextItem := sample(setdiff(x, ItemEaten), 1), by = Name]