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

R: What's wrong with my use of %in%?

提问人:Hack-R 提问时间:11/24/2014 最后编辑:Hack-R 更新时间:11/24/2014 访问量:64

问:

我创建了一个名为JFFALSE

JF <- F

我想将该值更改为 if (date) 值位于我从 SQL Server 检索的日期列表中。我会用代替,但有几个不同的变量,比如和任意数量的日期......也因为我想掌握.TRUESomeDate==%in%SomeDateJF.Date%in%

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

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

我检查了两个对象 -- 是字符,是 ,并且是原本的因子,但我尝试将其更改为字符,但它没有解决这个问题。此时,我在代码中存储为字符的原因并不相关。class()SomeDateJF.Datedata.frameJF.Date$Date_ValuesSomeDate

这不会返回任何错误,但不会在应该返回时更改 to 的值。我做错了什么?JFTRUE

您可以使用任何任意日期分配来重现此内容,例如对相同类型/类的对象。<- "1970-01-01"

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

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

r

评论

0赞 talat 11/24/2014
如果两者都是原子向量并且类型相同,则可以这样做JF <- SomeDate %in% JF.Date
0赞 Hack-R 11/24/2014
@beginneR这似乎完全合乎逻辑,但我现在刚刚尝试过,但没有用:/ ......等等,好吧,现在我看到了问题/解决方案。事实并非如此,但这让我弄清楚了!
0赞 talat 11/24/2014
您应该将这两个变量转换为正确的日期格式,然后就可以这样做了(如果没有可重复的示例,很难提供更详细的帮助)。as.Date(... , format =" ...")JF <- SomeDate %in% JF.Date$Date_Values
0赞 Hack-R 11/24/2014
@beginneR这是一种合乎逻辑的方法,但实际上不是问题——请参阅我的解决方案。不过,该示例是可重现的,您可以像 JF 一样编造任何 arbirtrary 日期值。Date$Date_Value <- “1970-01-01” 和 SomeDate <- “1970-01-01”class

答:

0赞 Hack-R 11/24/2014 #1

@beginneR有一个建议,但不起作用,但它使我找到了解决方案:

JF <- SomeDate %in% JF.Date

这完全有道理,但并没有改变 from 的值,就像我最初的尝试一样。JFFALSETRUE

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

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

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