R:我使用%in%有什么问题?

时间:2014-11-24 14:53:21

标签: r

我创建了一个名为JF的标记,我将其初始化为FALSE

JF <- F

如果TRUE的(日期)值位于我从SQL Server检索的日期列表中,我想将值更改为SomeDate。我会使用==而不是%in%但是有一些不同的变量,例如SomeDateJF.Date中的任意数量的日期......还因为我想掌握使用%in%

sql  <- "select distinct Date_Values from SomeTable"
JF.Date <- sqlQuery(db, sql)  

if (SomeDate %in% JF.Date) {JF <- T}

我检查了两个对象的class() - SomeDate是字符,JF.Datedata.frame,而JF.Date$Date_Values原来是因素,但我试过将其改为角色并没有解决这个问题。我的代码中存在SomeDate作为字符存在无关的原因。

这不会返回任何错误,但它不会将JF的值更改为TRUE。我做错了什么?

您可以使用任意日期分配(如<- "1970-01-01")将相同类型/类别的对象重现为此。

for (i in 1:nrow(JF.Date)){
 if (SomeDate == JF.Date[i]) {JF <- T}
}

确实有效,但我想知道如何使用%in%

1 个答案:

答案 0 :(得分:0)

@beginneR有一个不起作用的建议,但这导致我找到了解决方案:

JF <- SomeDate %in% JF.Date

这完全有道理,但没有将JF的值从FALSE更改为TRUE,就像我最初的尝试一样。

我意识到这是因为 - 虽然这个“数据帧”中只有一列 - 但可能有多列而R不知道要查看哪一列。如果显示了相应的警告或错误消息,这将更加明显,但仍然可以:

JF <- SomeDate %in% JF.Date$Date_Value

我无法接受我自己的答案2天,所以如果有人提出更有用/全面的答案,那么我会考虑选择你的答案作为我自己的解决方案。如果我要放弃这些积分,你必须让它变得非常好! ;)