【问题标题】:subsetting in Logistic Regression in R [duplicate]R中逻辑回归的子集[重复]
【发布时间】:2021-04-05 14:12:59
【问题描述】:

在 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() 看看哪里出错了。

【问题讨论】:

  • 问题需要提供可重现的输入和代码,以便其他人可以重现错误。将其减少到显示错误所需的最少数据和代码。查看r标签顶部的信息。
  • 这里是代码:library(caTools) split

标签: r regression


【解决方案1】:

进行子集化的两行是问题之一,尽管无法通过测试来证明是这种情况,因为您未能提供数据。"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 函数。而且您不应该将 cmets 用于代码。它们的格式不正确。使用 SO 的编辑工具,您可以通过问题正文下方的链接访问这些工具:

【讨论】:

    猜你喜欢
    • 2021-07-01
    • 2013-08-04
    • 2018-01-26
    • 2019-05-01
    • 2018-02-12
    • 2014-06-20
    • 2021-11-13
    • 1970-01-01
    • 2014-10-30
    相关资源
    最近更新 更多