Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用R'解决以下维度不匹配问题;最近的邻居是谁?_R - Fatal编程技术网

如何使用R'解决以下维度不匹配问题;最近的邻居是谁?

如何使用R'解决以下维度不匹配问题;最近的邻居是谁?,r,R,在下面的代码中,我尝试使用K个最近邻和一个预测器。 据我所知,train.X中的示例数不需要与test.X中的示例数匹配,但是R似乎没有正确解析我的输入 library(ISLR) library(class) train=(Weekly$Year<2009) train.X = Weekly$Lag2[train] test.X = Weekly$Lag2[!train] train.Direction = Weekly$Direction[train] knn.pred = knn(

在下面的代码中,我尝试使用K个最近邻和一个预测器。 据我所知,
train.X
中的示例数不需要与
test.X
中的示例数匹配,但是
R
似乎没有正确解析我的输入

library(ISLR)
library(class)

train=(Weekly$Year<2009)
train.X = Weekly$Lag2[train]
test.X = Weekly$Lag2[!train]
train.Direction = Weekly$Direction[train]
knn.pred = knn(train.X, test.X, train.Direction, k=1)

如何修复
train.X
test.X
,以便
R
正确解析它们?

函数
knn
将矩阵或数据帧作为train和测试集的参数。你传递的是一个向量,它被解释为一个矩阵,但不是你想要的方式。具体地说,传入的数据被解释为单个数据点,具有表示要素的不同值。这意味着训练和测试的功能数量不同,正如错误消息所示

要修复,只需显式转换,例如

knn.pred = knn(data.frame(train.X), data.frame(test.X), train.Direction, k=1)

这是因为在对矩阵、数组或数据帧进行子集设置时,R会自动尝试强制使用最少的维数。为了防止删除数据帧的维度,可以使用默认为
drop=FALSE
的subset函数

train.X <- subset(Weekly[train],select="Lag2")

这个解决方案是可行的,但这是迫使R以我想要的方式解释向量的唯一方法吗?特别是,我尝试转置向量,但只会导致长度不匹配错误消息。您还可以将其显式转换为具有适当维度的矩阵。其语法是什么?
matrix(train.X,ncol=1)
train.X <- subset(Weekly[train],select="Lag2")
train.X <- subset(Weekly,Year<2009,select="Lag2")
> names(train.X)
[1] "Lag2"