这是产生上述错误的代码行。变量'y'包含值'0'或'1'。数据框中有大约十二个不同的变量。我正在使用R版本3.4.1。
set.seed(201)
library(caTools)
spl = sample.split(bank$y, 0.7)
training <- subset(bank, split == TRUE)
答案 0 :(得分:5)
我没有您的数据,但看起来您只是用错误的名称调用对象。
training <- subset(bank, spl == TRUE)
应该工作。
就个人而言,我更喜欢以下内容,仅仅因为它对我的大脑来说更合乎逻辑,但是它做了同样的事情:
training <- bank[ spl == TRUE, ]
你可以走得更远,但根据你大脑的工作方式,它可能没什么意义:
training <- bank[ spl, ]
解释:您使用以下内容创建名为spl
的向量:
spl = sample.split(bank$y, 0.7)
这为您提供了一个逻辑向量,旨在将您的数据框子集化到与TRUE
中的spl
值对应的行。为此,您使用subset
或类似内容。 subset
要求输入(bank)和矢量用作子集运算符。向量是一个逻辑向量,TRUE
用于&#34;使用此&#34;并且FALSE
不能使用此&#34;。您的子集参数为spl
,其类似于TRUE,TRUE,FALSE,....
,因此您可以将其直接传递给subset
。
注意,在逻辑向量的情况下,使用&#34; == TRUE&#34;传递向量。实际上将返回相同的向量:
spl <- c(T,T,T,F,F)
> spl
[1] TRUE TRUE TRUE FALSE FALSE
> spl == TRUE
[1] TRUE TRUE TRUE FALSE FALSE
这就是为什么您可以互换使用spl
或spl==TRUE
的原因。