微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R中逻辑回归中的子集

如何解决R中逻辑回归中的子集

我在 R 中的逻辑回归过程中拆分和子集我的数据时收到以下错误消息:

library(caTools) 
split <-sample.split(df1,SplitRatio = 0.5) 
split 
training <- subset(df1,split == "TRUE") 
testing <- subset(df1,split == "FALSE")

错误:必须使用有效的下标向量对行进行子集。 i 逻辑下标必须与索引输入的大小匹配。 x 输入的大小为 333030,但下标 i 的大小为 9。 运行 rlang::last_error() 以查看错误发生的位置。

解决方法

执行子集化的两行是问题之一,尽管测试无法证明是这样,因为您未能提供数据。"TRUE""FALSE" 都不符合逻辑。他们是性格。如果 split 被正确创建,这将起作用(但显然不是因为参数的长度不正确:

training <- subset(df1,split )   # don't need the `==` if split is logical
testing  <- subset(df1,!split )

因此,第一个问题是未能为拆分提供适当的论据。数据帧的长度是列数;它是 R 的陷阱之一。但是,您需要提供 sample.split 函数只是一个列向量,其长度将匹配行数(而不是列数)。请参阅帮助页面中的第一个示例:

library(MASS)
  data(cats)   # load cats data
  Y = cats[,1] # extract labels from the data,just one column needed
  msk = sample.split(Y,SplitRatio=3/4)
  str(msk)
  # logi [1:144] TRUE TRUE TRUE FALSE FALSE TRUE ...

其他几个指针。将逻辑向量命名为 split 是一个坏主意,因为有一个名为 split 的基本 R 函数。并且您不应该对代码使用注释。它们的格式不正确。使用 SO 的编辑工具,您可以通过问题正文下方的链接访问这些工具:enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。