2014-11-04 1 views
5

Как указано в R documentation, оператор «[» определяется таким образом:Постоянно установлено снижение ЛОЖЬ для векторных операторов в R

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

Есть ли способ, чтобы переопределить его для того, чтобы установить drop параметр значение по умолчанию - FALSE?

+2

Вы можете изменить '[.data.frame' легко , Однако я не думаю, что это может быть сделано для объектов 'matrix' или' array' без производительности и других проблем. – Roland

+0

И как вы меняете '[.data.frame'? – Pop

+0

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

ответ

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

Это должно предотвратить некоторое нежелательное поведение в R, где матрица, которая сводится к одной строке или одном столбце будет внезапно вести себя как c(number,number,number) вместо matrix(c(number,number,number),ncol=1)

+4

Если я определяю это, извлечение первого элемента числового вектора длины 10 будет замедляться в ~ 50 раз. – Roland

+0

Не смотрел на это :(спасибо Roland –

+1

... но это всего лишь накладные расходы нескольких микросекунды. Вероятность того, что вы пишете алгоритм, который называет '' '' миллионы раз для него даже неважно, – flodel

Смежные вопросы