【发布时间】:2020-02-17 15:34:27
【问题描述】:
我在编写一些代码时遇到了困难。以前代码可以正常工作,但现在不行了。
为了突出问题,我提供了两个数据框。
我有两个数据框,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() 但这会导致稍后出现错误。
任何帮助表示赞赏。
【问题讨论】:
-
Dataframe 子集可以删除
dim属性。试试dat[-train,"y", drop = FALSE]。而且cleansvm不仅仅是"data.frame"。
标签: r dataframe data.table