Основные ошибки амебы устраняются путем устранения амебы
Пришел решительный момент для того, чтобы разобраться таки в особенностях языка R. Больше языков, названия которых состоят только лишь из одной буквы! Язык уже забавляет, например, следующим:
Команды
X<-1:16
dim(X)<-c(4,4)
создают матрицу размером 4 на 4. Если после этого сказать
dim(X)
то результатом будет размер матрицы - (4,4)
А если сказать компилятору
Y<-1:16
dim(Y)
то результатом будет NULL, а не (16, 1), как могло бы показаться.
Непривычно, что одна и та же функция может использоваться и для вывода размера объекта, и для, собственно, создания объекта. Не очевидно, что функция работает в случае матриц и выдает NULL в случае векторов.
Во дворе тем временем кто-то насвистывает главную тему из KIll Bill. Интересно, к чему бы это.
Команды
X<-1:16
dim(X)<-c(4,4)
создают матрицу размером 4 на 4. Если после этого сказать
dim(X)
то результатом будет размер матрицы - (4,4)
А если сказать компилятору
Y<-1:16
dim(Y)
то результатом будет NULL, а не (16, 1), как могло бы показаться.
Непривычно, что одна и та же функция может использоваться и для вывода размера объекта, и для, собственно, создания объекта. Не очевидно, что функция работает в случае матриц и выдает NULL в случае векторов.
Во дворе тем временем кто-то насвистывает главную тему из KIll Bill. Интересно, к чему бы это.
Но к примеру, выборка по 10000 ключей из миллиона записей и подсчёт простенькой статистики работала адски долго.
При этом, просто сортировка по этим-же ключам работала вполне бодренько.
Хотя под рукой вот прямо сейчас нет ничего, кроме собственно R, на чем бы я мог попроверять скорость работы подобных запросов.)
Из этого миллиона я обрабатывал всего сто тысяч и один прогон занимал около 2х часов а гугление показывало, что у людей встречается похожая проблема, но как решить я не нашел(
Но в остальном всё было очень юзер-фрэндли.
Ну да, мне пока немного странен синтаксис, но в целом нравится. Я пока с консольки работаю, RStudio буду осознавать чуть позже.
dim(X) <- c(4,4) является синтактическим сахаром для X <- `dim<-`(X, c(4,4))
Можно, скажем, определить `inc<-` <- function (n, value) n+value. Тогда:
> n <- 7
> inc(n) <- 8
> n
[1] 15
Хотя функции inc у нас как не было, так и нет)
А что касается dim(1:16), которое возвращает NULL — так ведь 1:16 относится к классу integer, а не, скажем, matrix или array или data.frame.