对于R中的向量运算符,将drop永久设置为FALSE

对于R中的向量运算符,将drop永久设置为FALSE,r,matrix,R,Matrix,如R中所述,运算符“[”的定义如下: x[i, j, ... , drop = TRUE] 有没有办法重新定义它,以便将参数默认值设置为FALSE?`[`您可以轻松更改[.data.frame。但是,我认为对于矩阵或数组对象,不存在性能和其他问题。您如何更改[.data.frame?[或者类似于`[.data.frame`的东西如果我定义它,提取长度为10的数字向量的第一个元素会慢50倍……但这只是几微秒的开销。您编写调用[数百万次,它甚至都很重要。我希望OP只打算将其用于自己的函数,而不是期

如R中所述,运算符“[”的定义如下:

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

有没有办法重新定义它,以便将
参数默认值设置为
FALSE

`[`您可以轻松更改
[.data.frame
。但是,我认为对于
矩阵
数组
对象,不存在性能和其他问题。您如何更改
[.data.frame
[
或者类似于
`[.data.frame`的东西如果我定义它,提取长度为10的数字向量的第一个元素会慢50倍……但这只是几微秒的开销。您编写调用
[
数百万次,它甚至都很重要。我希望OP只打算将其用于自己的函数,而不是期望编译库函数内部的所有子集都会效仿!就个人而言,我很想建议将自己的函数写出来,然后使用文本编辑器全局替换“[^]]“with”,drop=FALSE]“:-)(regexp)您可能可以为矩阵对象编写一个替代类,其中提供了您自己的子集运算符实现。也可能应该将其编写为
[
@flodel通常我会同意,但向量子集是最基本的语言特性之一,它经常在循环中使用。
`[` <- function(...) base::`[`(...,drop=FALSE)