Rattle 加载 titanic_train 完整数据但在子集化时失败

Rattle loads titanic_train full data but fails when subsetted

我可以毫无问题地将 titanic_train 数据集加载到 Rattle 中,但是如果我对几列进行子集化,则会出现错误:

Error in paste(., collapse=""): cannot coerce type 'closure' to vector of type 'character'

这是我的工作流程:

library(magrittr)
library(rattle)
library(titanic)
library(dplyr)

dat <- titanic_train
df <- dat[c(2, 3, 5, 6)]
df %<>% mutate_at(c("Survived", "Sex"), factor)
rattle()

datdf 都显示为 class data.frame.

Rattle 正确加载 dat,但当我尝试加载 df.

时失败并显示错误代码

我错过了什么?

更新

现在我更糊涂了。以下代码适用于 dat2 数据框,但在 Rattle 中尝试将 df 作为 R 数据集加载时出现错误。 (我将 mutate_at 更新为 mutate(across 但它没有任何区别。

library(titanic)
library(magrittr)
library(rattle)
library(dplyr)

dat <- titanic_train

dat2 <- dat[c(2,3,5,6)]
df <- dat[c(2,3,5,6)]

dat2 %<>% mutate(across(c("Survived","Sex"), factor))
df %<>% mutate(across(c("Survived","Sex"), factor))

rattle()

问题似乎是 Rattle 将 df 对象视为对 F 分布的 df 函数的统计包调用。在上面的代码中命名对象 dt 时会发生同样的错误——Rattle 失败是因为(我认为)它认为 dt 是 T 分布函数。将对象名称更改为 dt1df1 在 Rattle 中工作得很好。

当我尝试 class(df)typeof(df) 时,这并不明显。虽然使用现有的 function/object 名称来命名对象是危险的,但数据框的 df 和数据 table 的 dt 通常是看过。