R:spls获取错误“;一个%*%y中出错:需要数字/复数矩阵/向量参数“;

R:spls获取错误“;一个%*%y中出错:需要数字/复数矩阵/向量参数“;,r,R,我在尝试使用R中的spls软件包时遇到问题。我是一个新手,不断遇到以下错误: library(spls) data(iris) TrainData <- iris[,1:4] TrainClasses <- iris[,5] cv1 <- cv.spls(TrainData,TrainClasses,eta = seq(0.1,0.9,0.1), K = c(1:3)) # eta = 0.1 # Error in one %*% y : requires numeric/c

我在尝试使用R中的
spls
软件包时遇到问题。我是一个新手,不断遇到以下错误:

library(spls)
data(iris)
TrainData <- iris[,1:4]
TrainClasses <- iris[,5]
cv1 <- cv.spls(TrainData,TrainClasses,eta = seq(0.1,0.9,0.1), K = c(1:3))
# eta = 0.1 
# Error in one %*% y : requires numeric/complex matrix/vector arguments
库(spls)
数据(iris)

TrainData似乎
cv.spls
不喜欢为响应的y向量设置因子变量。这似乎有效

TrainClasses <- model.matrix(~Species+0, data=iris)
cv1 <- cv.spls(TrainData, TrainClasses, 
    eta = seq(0.1,0.9,0.1), K = c(1:3))

TrainClasses我认为您已经正确地识别了问题,但我不确定您的解决方案是否会给出预期的结果。我想你想得到一个
矩阵
y
响应。否则,就意味着三个变量之间存在线性关系(第三个级别是第一个级别的三倍)。对于二进制响应,这很好。很好。我已经更改了答案以显示分类数据的方法。谢谢Nograps和MrFlick。嗯。。我需要一段时间才能适应R(以及统计数据)。我尝试了“plot(my_sim,what=“observations”,show.names=FALSE)”并按预期绘制了观察图。有没有办法给情节中两个完全分开的“组”分配不同的颜色或符号?如果你有不同的问题,最好开始新的帖子。评论中不应提出与原始问题无关的新问题。
TrainClasses <- as.numeric(iris[,5])
cv1 <- cv.spls(TrainData, TrainClasses, 
    eta = seq(0.1,0.9,0.1), K = c(1:3))