r中语句的含义?

时间:2017-04-13 00:22:57

标签: r classification training-data

我正在尝试调试R中的代码以便理解它。声明如下:

library(rpart)
X = read.csv("strange_binary.csv");
fit  = rpart(c ~ X + X.1 + X.2 + X.3 + X.4 + X.5 + X.6 + X.7 + X.8 + X.9, method ="class",data=X,minbucket=1,cp=.04);
printcp(fit);
fit = prune(fit,cp=.04);

pred = predict(fit,X[,1:10],type="vector")      # test the classifier on the training data
pred[pred == 2] = "bad"
pred[pred == 1] = "good"

目的是建立一个分类器并在训练数据上进行测试。但是,我不明白这些陈述:

pred[pred == 2] = "bad"
pred[pred == 1] = "good"

pred==2pred==1可能是TRUEFALSE - 它是如何用于索引矢量的?对不起我的天真问题,我来自C ++背景并在R中采取了宝贝步骤。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

这是一种说法:  将值“bad”分配给pred等于2的pred子集

pred[pred == 2] = "bad"

将值“good”赋值给pred的子集,其中pred等于1

pred[pred == 1] = "good"

更像R的分配值的方式如下所示:

pred[pred == 2] <- "bad"
pred[pred == 1] <- "good"

因此它根据pred的逻辑等于这两个值中的一个或另一个来创建类。

修改

因为你在评论中询问了它是什么。我建议您一次在一行上面执行代码。在每个阶段,您可以通过使用str()来查看已更改的内容,以查看新变量的结构。它将通过一些示例为您提供数据的维度和类型。

str(fit)
str(pred)

它将帮助您了解每个步骤中发生的事情。