我创建了一个名为JF
的标记,我将其初始化为FALSE
JF <- F
如果TRUE
的(日期)值位于我从SQL Server检索的日期列表中,我想将值更改为SomeDate
。我会使用==
而不是%in%
但是有一些不同的变量,例如SomeDate
和JF.Date
中的任意数量的日期......还因为我想掌握使用%in%
。
sql <- "select distinct Date_Values from SomeTable"
JF.Date <- sqlQuery(db, sql)
if (SomeDate %in% JF.Date) {JF <- T}
我检查了两个对象的class()
- SomeDate
是字符,JF.Date
是data.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%
。
答案 0 :(得分:0)
@beginneR有一个不起作用的建议,但这导致我找到了解决方案:
JF <- SomeDate %in% JF.Date
这完全有道理,但没有将JF
的值从FALSE
更改为TRUE
,就像我最初的尝试一样。
我意识到这是因为 - 虽然这个“数据帧”中只有一列 - 但可能有多列而R不知道要查看哪一列。如果显示了相应的警告或错误消息,这将更加明显,但仍然可以:
JF <- SomeDate %in% JF.Date$Date_Value
我无法接受我自己的答案2天,所以如果有人提出更有用/全面的答案,那么我会考虑选择你的答案作为我自己的解决方案。如果我要放弃这些积分,你必须让它变得非常好! ;)