gpt4 book ai didi

rpart公式参数用法: "NAs are not allowed in subscripted assignments"

转载 作者:行者123 更新时间:2023-12-04 17:58:33 25 4
gpt4 key购买 nike

在简单的线性回归中,有了数据框,我们可以用它来更容易地编写公式,例如:

lm(my_dep_var ~ .-var1, data=my_df)

将返回模型,除了 var1 之外的变量作为我们模型中的独立变量。
但是,当我尝试在 rpart 函数中使用相同的公式时,它似乎有一个错误:

> tree1 <- rpart(Reverse ~ .-Circuit, data=train[a], method="class", minbucket=25)
Error in rpart(Reverse ~ . - Circuit, data = train[a], method = "class", :
NAs are not allowed in subscripted assignments
>

我没有 NA 是我的数据,没有负号(但带有点:Reverse ~ .)的 rpart 命令似乎运行良好。所以看来我不能在 rpart 公式中使用减号。真的是这样吗?我在哪里可以阅读文档中的此类内容?

编辑:这是生成此类错误的简化代码:

var1 <- as.factor(c(1,1,1,0,1))
var2 <- c(0,0,0,0,0)
var3 <- factor(c("2", "9", "5", "5", "5"), levels=c("2","3","4","5","8","9"))
var4 <- factor(c("EA", "EA", "EA", "EA", "JP"), levels=c("EA", "CR", "CA", "JP"))
dtf <- data.frame(var1, var2, var3, var4)
rpart(var1 ~.-var4 ,data=dtf, method="class", minbucket=25)

最佳答案

编辑:新代码。

我认为问题出在字符/因子变量上。为了解决这个问题,我不得不创建一个带有虚拟变量的数据框。

# Sample size
N <- 10000

# Creating the df
var1 <- sample(c(0,1),N,replace = T)
var2 <- sample(c(0),N,replace = T)
var3 <- as.factor(sample(c("2", "9", "5", "5", "5"),N,replace = T))
var4 <- as.factor(sample(c("EA", "EA", "EA", "EA", "JP"),N,replace = T))
dtf <- data.frame(var1, var2, var3, var4)

# Loading the package
require(rpart)
require(caret)

# Hot Enconding - Creating dummy variables
dummies <- dummyVars(~ ., data = dtf)
dtf2 <- as.data.frame(predict(dummies, newdata = dtf))

# Fitting the model
fit <- rpart(var1 ~. - var4.EA,data=dtf2, method="class", minbucket=25)

希望这能解决您的问题。

关于rpart公式参数用法: "NAs are not allowed in subscripted assignments",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38266457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com