r - 某些组中的错误对于 'qda' 来说太小了

标签 r error-handling subset

# load the library and data
library('MASS')
library('sqldf')
data(fgl, package = 'MASS')
df <- data.frame(fgl)
# (a)select chosen glass types
#adf <- sqldf("select * from df where type='WinF' or type='WinNF' or     type='Veh' or type='Head'")
adf <- subset(df, type=="WinF"|type=="WinNF"|type=="Veh"|type=="Head")

traindata <- adf[1:128,]
testdata <- adf[129:192,]
#typetesting <- adf$type[129:192,]
# LDA
# fit the qad model based on the training 
qdamodel = qda(type~RI+Na+Mg+Al+Si+K+Ca+Ba+Fe, data=traindata)

我有一个错误
Error in qda.default(x, grouping, ...) : 
  some group is too small for 'qda'

我同时使用 sqldfsubset功能,但它们不起作用。谢谢。

最佳答案

变量 type是一个具有 6 个级别的因子:“WinF”、“Veh”、“Head”、“WinNF”、“Con”和“Tabl”。当你这样做时:

adf <- subset(df, type=="WinF"|type=="WinNF"|type=="Veh"|type=="Head")

您保留其中 4 个级别的行,但变量本身仍然有 6 个级别。因此,您的样本中没有显示剩余的 2 个级别,这就是 qda提示。

您可以通过转换 type 来解决此问题回到字符变量:
adf$type <- as.character(adf$type)

然后进行其余的分析。

关于r - 某些组中的错误对于 'qda' 来说太小了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42615643/

相关文章:

python - 处理 PyMySql 异常 - 最佳实践

video - 如果视频文件在 FFmpeg 中有像素化,有什么办法吗?

javascript - 如果变量未定义,如何在 IE 中优雅地失败而不是看到 SCRIPT5009?

r - 使用 MICE 进行多重插补后,如何在 R 中的子集上使用 lm() 运行线性回归

r - R Shiny 中 html 小部件之间的交互

r - 将 r 数据帧转换为正确的格式以使用rep

c# - 我怎样才能得到一组遵守顺序的所有子集

R:根据组和不同条件对数据框进行子集化

r - 我在哪里为 R 包中的测试指定随机种子?

r - 生成矩阵/使用外部