我在做一个贴纸书的项目。
我通过以下代码生成一组贴纸:
for (stickers in 1:1){
newstickers <- c(sample(1:568, 5, replace = TRUE))
newstickers <- data.frame(newstickers)
print(newstickers) #just to check it worked
}下面是我的一个例子:
newstickers
1 335
2 555
3 460
4 428
5 339现在我想简单地浏览一下这5个贴纸,看看它们是否出现在我的“贴纸薄”中。如果它们有(它们是重复的),那么将它们添加到“交换集合”中。如果它们不是(它们是新的/独特的贴纸),那么我想将它们添加到我的‘贴纸手册’df中。
我想像这样的东西可以工作,但它要么不是正确的选择,要么是格式不正确(仍然是非常初学者!)
for (sticker in 1:nrow(newstickers)) {
if(sticker %in% StickerAlbum) {
SwapsCollection <- rbind.fill(SwapsCollection, data.frame(sticker))
} else {
StickerAlbum <- rbind.fill(StickerAlbum, data.frame(sticker))
}
}预期输出
第一次运行时,Sticker Book为空,因此应添加所有5个值
> StickerAlbum
sticker
1 335
2 555
3 460
4 428
5 339但是,当我生成第二组贴纸时,比如说335,555,1,2,3
数字335和555是重复的,因此应该添加到Swaps Collection中,新的贴纸手册将如下所示
> StickerAlbum
sticker
1 335
2 555
3 460
4 428
5 339
6 1
7 2
8 3
> SwapsCollection
sticker
1 335
2 555发布于 2021-05-03 02:12:49
有几个地方你可能会改进。
首先,您应该尝试规范化data.frame列的名称。也许它们应该只是一个名称为stickers的单列
e.i.
for (stickers in 1:1){
newstickers <- c(sample(1:568, 5, replace = TRUE))
newstickers <- data.frame(stickers = newstickers)
print(newstickers) #just to check it worked
}老实说,这个for语句是多余的,因为您没有在花括号内的任何地方使用“贴纸”。
接下来,正如我在评论中所说的,在使用变量名时,您将获得一致性。
#assuming StickerAlbum is also a data.frame with
#a "stickers" column
#loop through newstickers$stickers and assign each
#value to sticker
for (sticker in newstickers$stickers) {
#compare sticker to those values inside
#StickerAlbum$stickers vector.
if(sticker %in% StickerAlbum$stickers) {
SwapsCollection <- rbind.fill(
SwapsCollection,
data.frame(stickers = sticker)
)
} else {
StickerAlbum <- rbind.fill(
StickerAlbum,
data.frame(stickers = sticker)
)
}
}https://stackoverflow.com/questions/67359537
复制相似问题