在R

时间:2016-10-25 20:23:09

标签: r

我是新来的,潜入R,我在尝试解决背包问题时遇到了问题。

出于优化目的,我在R中编写了一个动态程序,但是,现在我正在返回项目,我成功了,我只得到二进制数字,说明项目是否已被选中(1 =是)。像这样:

  

选择   [1] 1 0 0 1

但是,现在我希望Select函数返回值的名称而不是这些二进制值。在下面我创建了一个我的问题的例子。

这将是数据和相关的数据框架。

items <- c("Glasses","gloves","shoes")
grams <- c(4,2,3)
value <- c(100,20,50)


data <- data.frame(items,grams,value)

现在,我创建了各种函数,最后一个函数澄清了产品是否被1(是)或0(否)选中。像上面一样。但是,我真的希望它能够返回该项目的相关名称。是否有办法通过链接回创建的数据框来解决这个问题? 所以它会说而不是(如果所有产品都被选中)

  

选择   [1] 1 1 1

     

选择   [1]眼镜手套鞋

我相信我必须创建一个新功能。但正如我所提到的,如果是1(是),是否有一种很好的方法可以返回数据帧以从数据帧中的另一列获取相关值?

我真的希望我的问题现在更加明确,有人可以指引我朝着正确的方向前进。

Best,Berber

1 个答案:

答案 0 :(得分:0)

让我们说你的二元向量是

idx <- [1, 0, 1, 0, 1]

只需使用,

items[as.logical(idx)]

将为您提供所选项目的名称,以及

items[!as.logical(idx)]

将为您提供未选择项目的名称