if语句中长度为零的R参数
我有一个dfif语句中长度为零的R参数,r,loops,if-statement,R,Loops,If Statement,我有一个df df <- data.frame(id = c(1, 1, 2, 2, 3, 3, 3), year = c(1997,1997,1997,1997,1998,1998,1998), usable = c(TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE), main = c(TRUE, TRUE, FALSE, FALSE, TRUE
df <- data.frame(id = c(1, 1, 2, 2, 3, 3, 3),
year = c(1997,1997,1997,1997,1998,1998,1998),
usable = c(TRUE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE),
main = c(TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE))
df该问题最有可能是由于创建了未使用的级别
,因为在交互
df$id_year <- interaction(df$id, df$year, drop = TRUE)
你想通过做什么!唯一的(df$main[rows]
?它是一个向量,但你似乎认为它是一个布尔值。Liselotte,我知道特定的代码不起作用。你认为unique
返回什么?试试unique(c(1,1,2,3))
,看看它是(1)不是逻辑的
,或者是可以推断出来的;和(2)根据输出的外观,不能保证长度为1。您需要df$id\u year 0)
@akrun:非常感谢。现在行了Lisolette别为你一直问我道歉。。。如果你不问,你就不会得到答案。我很高兴akrun的答案对您有效,我希望您能在这之后快速前进。:-)
df$id_year <- interaction(df$id, df$year, drop = TRUE)
for (i in levels(df$id_year)) {
rows <- df$id_year == i & df$usable
if (length(unique(df$main[rows])) > 0) {
print("yes")
}
}
#[1] "yes"
#[1] "yes"
#[1] "yes"