首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查来自一个df的各个值是否在另一个值中。如果是,则执行x,否则执行y

检查来自一个df的各个值是否在另一个值中。如果是,则执行x,否则执行y
EN

Stack Overflow用户
提问于 2021-05-03 01:56:34
回答 1查看 20关注 0票数 0

我在做一个贴纸书的项目。

我通过以下代码生成一组贴纸:

代码语言:javascript
复制
for (stickers in 1:1){
  newstickers <- c(sample(1:568, 5, replace = TRUE))
  newstickers <- data.frame(newstickers)
  print(newstickers) #just to check it worked
}

下面是我的一个例子:

代码语言:javascript
复制
  newstickers
1         335
2         555
3         460
4         428
5         339

现在我想简单地浏览一下这5个贴纸,看看它们是否出现在我的“贴纸薄”中。如果它们有(它们是重复的),那么将它们添加到“交换集合”中。如果它们不是(它们是新的/独特的贴纸),那么我想将它们添加到我的‘贴纸手册’df中。

我想像这样的东西可以工作,但它要么不是正确的选择,要么是格式不正确(仍然是非常初学者!)

代码语言:javascript
复制
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个值

代码语言:javascript
复制
> StickerAlbum
   sticker
1        335
2        555
3        460
4        428
5        339

但是,当我生成第二组贴纸时,比如说335,555,1,2,3

数字335和555是重复的,因此应该添加到Swaps Collection中,新的贴纸手册将如下所示

代码语言:javascript
复制
> StickerAlbum
   sticker
1        335
2        555
3        460
4        428
5        339
6         1
7         2
8         3

> SwapsCollection
   sticker
1        335
2        555
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-03 02:12:49

有几个地方你可能会改进。

首先,您应该尝试规范化data.frame列的名称。也许它们应该只是一个名称为stickers的单列

e.i.

代码语言:javascript
复制
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语句是多余的,因为您没有在花括号内的任何地方使用“贴纸”。

接下来,正如我在评论中所说的,在使用变量名时,您将获得一致性。

代码语言:javascript
复制
#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)
      ) 
 }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67359537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档