我遇到了一个问题,我找到了解决方案,但想了解原始编码中发生了什么。
所以我开始从一个SQL数据库中提取一个表,并希望获得1个客户的信息,该客户端有2个客户编号。
最初我运行此选择这些帐号。
match <- c("C524",'5568')
gtc <- gtc[gtc$AccountNumber == match,]
然而,这只返回了大约一半的预期结果,并且返回的结果在不同的时间变化(这是作为每周报告运行),并且取决于运行它的PC。
现在,我已经设置了一个可以正常工作的循环并提取所有结果,但我真的想知道原始查询的内容。
match <- c("C524",'5568')
for (each in match) {
gtcLoop<- gtc[gtc$AccountNumber == each,]
result<-rbind(result,gtcLoop)
}
此外,长时间潜伏,第一次海报,所以让我知道我是否在这个问题上做错了。
答案 0 :(得分:2)
您需要将==
替换为%in%
:
gtc <- data.frame(AccountNumber = sample(c(match, "something"), 10, replace = TRUE))
gtc[gtc$AccountNumber %in% match,]
答案 1 :(得分:0)
要标记Qaswed的答案(+1),您需要了解在计算==
等向量比较时发生的情况。见:
?`==`
和
?`%in%`
然后尝试1 == c(1,2)
和1 %in% c(1,2)
之类的内容。
您获得一半结果的原因是因为行子集仅使用第一个评估,如:
df <- data.frame(id=c(1:5), acct_cd = letters[1:5])
df[df$acct_cd == c("a","c"),] # this is wrong, for demo only
df[df$acct_cd %in% c("a","c"),] # this is correct