Мне интересно идентифицировать числовые скаляры вроде:
doub <- 3.14
intg <- 8L
Я знаю, что они рассматриваются как длина одного вектора. Таким образом, для любого объекта R x
, является is.vector(x) && length(x) == 1
правильным способом проверить, является ли x
скаляром? length(x) == 1
сам по себе недостаточно, поскольку возвращает true, когда он должен возвращать false, для фрейма данных с одним столбцом или списком с одним элементом.
Есть ли причина, почему такая функция is.scalar
не реализована в базе R
? По некоторым причинам два случая, которые я мог найти в других функциях, не выполняются для случая фрейма данных, упомянутого ранее, это:
assertthat::is.scalar(data.frame(a = 1:2))
lambda.tools::is.scalar(data.frame(a = 1:2))
Почему результаты этих двух вызовов функций отличаются от моего понимания (и определения) того, как должна работать функция is.scalar
?