r - if语句中长度为零的R参数
问题描述
我有一个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, TRUE, TRUE))
当我执行代码时
df$id_year <- interaction(df$id, df$year)
for (i in levels(df$id_year)) {
rows <- df$id_year == i & df$usable
if (!unique(df$main[rows]) {
print("yes")
}
}
该行出现“长度为零的参数”的错误if (!unique(df$main[rows])
。谁能解释一下为什么以及如何解决它?谢谢
解决方案
该问题很可能是由于创建了未使用levels
的,因为默认情况drop = FALSE
下interaction
df$id_year <- interaction(df$id, df$year, drop = TRUE)
正如其他人提到的那样,在循环中!unique(
并不清楚。如果我们检查元素length
的unique
个数是否大于 0 ( if (length(unique(df$main[rows])) > 0)
,它将打印“yes”
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"
推荐阅读
- php - PHP电子表格以无效格式保存文件
- c++ - 如何实现在向量中调用任何构造函数(如 emplace_back)的方法?
- javascript - 等待 JavaScript 中的动态文件加载
- tfs - 关于 TFS 和使用自定义版本控制创建包的困惑
- javascript - 用于分配给 Asp.Net HiddenField 的加载事件
- python - LG 电视 UPnP/DLNA 错误非法 mime 类型
- email - PyWin32: how to get the sender addresses who have sent emails with a specific subject?
- bison - 如何为低内存系统设置 flex 和 bison?
- javascript - Google Places AutoComplete 小部件正在为每个请求生成一个新的会话密钥
- r - 自定义函数线性回归