2016-06-08 51 views
0

對於某些data.table,我正面臨子集問題。R:在使用列值/子集進行子集化時使用某些數據表的子集化問題

例如,如果我需要第四,第八和第九列的特定數據表「y」我使用下面的代碼,但結果它創建的矢量4,8,9,而不是獲得第四,第八和第九對於上面的代碼的結果列

y<-data.table(rnorm(100),pnorm(100),rnorm(100),pnorm(100),rnorm(100),pnorm(100),rnorm(100),pnorm(100),rnorm(100),pnorm(100)) 
req<-y[,c(4,8,9)] 
req 

是4,8,9

# [1] 4 8 9 

一個矢量輸出僅用於一些數據表我面臨此issue.Can請人解決此?

+1

你是混合了data.frames和data.tables什麼?這個鏈接可能會有所幫助,如果你的意思是data.tables,那麼可以參考http://stackoverflow.com/questions/5487269/subsetting-in-data-table。 – user1945827

+2

請[閱讀小插曲](https://github.com/Rdatatable/data.table/wiki/Getting-started)。 – Arun

回答

1

嘗試

req<-y[,c(4,8,9),with=FALSE] 

我認爲它會給你想要的

+0

謝謝。使用= FALSE是否有任何默認設置?因爲我只有一些數據表面臨問題。 – PPC

+0

不,我不認爲你可以將默認設置爲false。這就是數據表的設計方式。將其設置爲false允許您將數據表用作數據框。也許你想嘗試 y < - data.frame(rnorm(100)...),你不需要指定with = False。你可以閱讀這篇關於數據表的常見問題帖子http://datatable.r-forge.r-project.org/datatable-faq.pdf,它非常有用! – 2016-06-08 09:33:10

+1

@ George91這個FAQ相當過時,請使用下面的鏈接:https://rawgit.com/wiki/Rdatatable/data.table/vignettes/datatable-faq.html – jangorecki

0

至少有兩個選項:

# using column name 
y[ , .(V4,V8,V9)] 

# using column position 
y[, c(4,8,9), with = FALSE]