为什么 R 中的 expand.grid 返回 <0 行>?

  • 本文关键字:返回 中的 grid expand r
  • 更新时间 :
  • 英文 :


我正在尝试使用expand.grid来最终绘制统计模型的估计值。但输出是:

[1] ID     Age    Sex    Tcoded
<0 rows> (or 0-length row.names)

代码:

new_df <- with(test,
expand.grid(ID = factor(levels(ID)[1], levels = levels(ID)),
Age = gratia::seq_min_max(Age, n = 100),
Sex = factor(levels(Sex), levels = levels(Sex)),
Tcoded = median(Tcoded)))

如果删除ID的第一行,则该函数有效。为什么会发生这种情况?

试着运行问题的每个单独部分,看看发生了什么

with(test,
factor(levels(ID)[1], levels = levels(ID)))

返回

factor(0)
Levels: 

因此,它的长度为零,并破坏了其他所有内容(因为如果expand.grid的任何元素的长度为0,则输出data.frame的行数为零(。在将ID转换为因子之前,您正在尝试获取第一级别的ID。不知道你是否只是想要第一个身份证?还是ID只是级别而不是数字?

只需将ID从整数转换为因子。顺便说一句,您不需要用于Age范围计算的外部包,因为基本R的seq()可以工作。

test$ID <- as.factor(test$ID)
new_df <- with(
test,
expand.grid(ID = factor(levels(ID)[1], levels = levels(ID)),
Age = seq(from=min(Age), to=max(Age), length.out=100),
Sex = factor(levels(Sex), levels = levels(Sex)),
Tcoded = median(Tcoded)
)
)

最新更新