使用" for"创建多个矩阵环

时间:2015-04-08 05:06:00

标签: r matrix

我目前正在从事多变量聚类和分类的统计课程。对于我们的作业,我们尝试使用10倍交叉验证来测试具有三个分类的6个可变数据集的不同分类方法的准确度。我希望我可以帮助创建一个for循环(或其他一些我不知道的更好的东西)来创建和运行10个分类和验证,所以我不必重复自己一切都是10次....这就是我所拥有的。它会运行,但前两个矩阵只显示第一个变量。因此,我无法对其他部分进行故障排除。

index<-sample(1:10,90,rep=TRUE)
table(index)
training=NULL
leave=NULL
Trfootball=NULL
football.pred=NULL
for(i in 1:10){
training[i]<-football[index!=i,]
leave[i]<-football[index==i,]
Trfootball[i]<-rpart(V1~., data=training[i], method="class")
football.pred[i]<- predict(Trfootball[i], leave[i], type="class")
table(Actual=leave[i]$"V1", classfied=football.pred[i])}

删除&#34; [i]&#34;并用1:10替换它们现在单独工作....

1 个答案:

答案 0 :(得分:0)

您的问题在于将data.framematrix分配给您最初设为NULLtrainingleave)的向量。考虑它的一种方法是,你试图将整个矩阵挤入一个只能取一个数字的元素。这就是R代码出现问题的原因。您需要将trainingleave初始化为能够处理迭代聚合值的事物(R对象list,如@akrun指出的那样。)

以下示例应该让您了解正在发生的事情以及如何解决问题:

a<-NULL # your set up at the moment
print(a) # NULL as expected
# your football data is either data.frame or matrix
# try assigning those objects to the first element of a:
a[1]<-data.frame(1:10,11:20) # no good
a[1]<-matrix(1:10,nrow=2) # no good either
print(a)

## create "a" upfront, instead of an empty object
# what you need: 
a<-vector(mode="list",length=10)
print(a) # empty list with 10 locations
## to assign and extract elements out of a list, use the "[[" double brackets
a[[1]]<-data.frame(1:10,11:20)
#access data.frame in "a"
a[1] ## no good
a[[1]] ## what you need to extract the first element of the list
## how does it look when you add an extra element?
a[[2]]<-matrix(1:10,nrow=2)
print(a)