Определение x = NULL
используется, только если не указано значение x
.Поэтому при написании examplefn(2)
то, что читает R
, равно examplefn(x = 2)
(поскольку x
- аргумент номер 1) и, следовательно, результат.
Если вы хотите обойти это, вот несколько подходов:
1. Путем создания двух функций
fun0 <- function (x, ...) str(x)
fun1 <- function (...) fun0(NULL, ...)
fun1(2)
# NULL
2. Другой подход заключается в присвоении имен аргументам, например,
fun2 <- function (x = NULL, y) str(x)
fun2(y = 2)
# NULL
3. Другой способ, возможно, наиболее удобный для вас, это просто изменить порядок аргументов, см.
fun3 <- function (..., x = NULL) str(x)
fun3(2)
# NULL
4. Наконец, здесь также(тривиальная) возможность - установить x <- NULL
внутри функции
fun4 <- function (...) {
x <- NULL
str(x)
}
fun4(2)
# NULL
Но я предполагаю, что у вас есть причины хотеть, чтобы x
был аргументом.