我在编写某些代码时遇到困难。以前该代码可以正常运行,但现在却不能。
为了突出这个问题,我提供了两个数据框。
我有两个数据帧,dat和cleansvm。当我以相同的方式对两个框架进行子集化时,我得到以下信息:
head(dat[-train,])
x.1 x.2 y
2 2.183643 3.6888733 1
3 1.164371 3.5865884 1
4 3.595281 1.6690922 1
5 2.329508 -0.2852355 1
6 1.179532 4.4976616 1
10 1.694612 2.5101084 1
head(dat[-train,"y"])
1 1 1 1 1 1
class(dat)
[1] "data.frame"
head(cleansvm[-train,])
Interpretation col1 col2
1: R 0 0
2: R 0 0
3: R 0 0
4: R 0 0
5: R 0 0
6: R 0 0
head(cleansvm[-train,"Interpretation"])
Interpretation
1: R
2: R
3: R
4: R
5: R
6: R
class(cleansvm)
[1] "data.table" "data.frame"
我的问题如下:为什么head(dat[-train,"y"])
和head(cleansvm[-train,"Interpretation"])
的形式不同,我能做些什么来使head(cleansvm[-train,"Interpretation"])
与head(dat[-train,"y"])
一样?
head(dat[-train,"y"])
稍后可以在我的代码中使用以形成表格,而head(cleansvm[-train,"Interpretation"])
由于其长度而不能使用。
我很确定cleansvm的类是引起问题的原因,但我不知道为什么。我尝试将其转换为简单的数据帧(当前为数据表),但这无济于事。我还尝试在head(cleansvm[-train,"Interpretation"])
上使用t(),但是稍后导致错误。
任何帮助表示赞赏。
答案 0 :(得分:0)
cleansvm
是data.table
对象。要获得预期的输出,您需要执行
head(cleansvm[-train, Interpretation])
或
head(cleansvm[-train,"Interpretation", with = F])