0

我可以毫无问题地将 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都显示为类 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()
4

1 回答 1

1

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

class(df)当我尝试或时,这并不明显typeof(df)。虽然用现有的函数/对象名称命名对象很危险,但通常可以看到df用于数据框和dt用于数据表。

于 2020-11-20T12:11:36.863 回答