2014-11-04 11 views
5

Come indicato in R documentation, l'operatore '[' è definito in questo modo:permanentemente stabilito di goccia FALSE operatori vettoriali in R

x[i, j, ... , drop = TRUE] 

C'è un modo per ridefinire al fine di impostare drop parametro valore predefinito a FALSE?

+2

È possibile modificare '[.data.frame' facilmente . Tuttavia, non penso che possa essere fatto per gli oggetti 'matrix' o' array' senza prestazioni e altri problemi. – Roland

+0

E come si cambia '[.data.frame'? – Pop

+0

'[' <- function (...) base :: '[' (..., drop = FALSE) –

risposta

2
`[` <- function(...) base::`[`(...,drop=FALSE) 

Questo dovrebbe impedire un comportamento indesiderato in cui R una matrice che si riduce a una riga o una colonna improvvisamente comportarsi come un c(number,number,number) anziché matrix(c(number,number,number),ncol=1)

+4

Se lo definisco, l'estrazione del primo elemento di un vettore numerico di lunghezza 10 rallenta di un fattore di ~ 50. – Roland

+0

Non ho visto :(, grazie Roland –

+1

... ma è solo un overhead di pochi microsecondi.La possibilità che tu scriva un algoritmo che chiama '[' milioni di volte è troppo piccolo per farlo è piccolo. – flodel

Problemi correlati