curr.num <- 1234567
as.numeric(strsplit(as.character(curr.num),"")[[1]]
Такой баголовок такого Злога.
вторник, 12 октября 2010 г.
R-artifiko №3
пятница, 8 августа 2008 г.
Canberra distance
В R важно внимательно читать обширную документацию. Сегодня я в этом
очередной раз убедился, считая расстояние Канберра (canberra distance в
англоязычной литературе, авторитетного источника с русским аналогом не
нашёл). Это расстояние для двух векторов X и Y определяется таким образом:
d=sum(|xi-yi|/|xi+yi|)
Если исходить из формулы и здравого смысла, то для двух пар векторов
X1=(1,2,0,0,3), Y1=(3,1,0,0,7) и X2=(1,2,3), Y2=(3,1,7) это расстояние
будет одинаковым, d=1,23333. Но функция dist для этих пар векторов даёт
разные значения расстояния: во втором случае это будет ожидаемое
значение 1,23333, а вот в первом - 2,05556.
После получасовых раздумий и перепроверок пришлось очень внимательно
перечитать описание этой функции. Оказалось, что если какие-то столбцы
при подсчёте исключаются, то результат увеличивается пропорционально
количеству использованных элементов. Для первой пары из исходных пяти
использовались только три элемента. Значит, повышающий коэффициент
составил 5/3. Вот и получается, что 5/3*1,23333=2,05556.
вторник, 24 июня 2008 г.
Отключение предупреждений в R
options(warn=-1)Вместо -1 может быть любое отрицательное число, и всё равно предупреждения отключатся. Важно потом не забыть вернуться к прежним настройкам. Я привык работать по разумной схеме.
old.opt <- options() # сохраняем старые настройки
options(warn=-1) # отключаем вывод предупреждений
... # тут находится код, работающий без вывода предупреждений
options(old.op) # возвращаемся к прежним настройкам
четверг, 5 июня 2008 г.
Горячие клавиши в R
четверг, 24 января 2008 г.
Настройка Notepad++ для комфортной работы с R
Notepad++ — мой штатный текстовый редактор, а R — система, в которой я сейчас чаще всего работаю. Вообще–то, в дистрибутиве R есть свой простенький GUI, нужд которых вполне достаточно даже для разработки достаточно сложных скриптов. Главное привыкнуть к тому, что программа вводится построчно и, если понадобиться, то на строчку выше просто так не поднимишься, и написанное именно там не исправишь.
Можно найти специализированные редакторы (Tinn-R хорош), но я, поработав сначала в стандартном интерфейсе, а потом в Tinn-R, предпочёл настроить Notepad++ так, чтобы его использовать как редактор R-скриптов.
Собственно, никто не мешает писать скрипт в любом текстовом редакторе, а потом с помощью команды source() или пункта меню "Загрузить код R&hellip" его запускать. Меня не устраивало отсутствие подсветки синтаксиса и необходимость постоянно переключаться между окнами редактора и консоли R.
Подсветка синтаксиса
Скачайте файл userDefineLang.xml и запишите его в папку %APPDATA%/Notepad++/.
Выполнение скрипта прямо из Notepad++
Добавьте в системную переменную Path путь к папке bin вашей текущей версии R. У меня, например, это будет путь C:\Program Files\R\R-2.5.1\bin;
В Notepad++ последовательно выберите Дополнения → NppExec → Execute… Появится окошко Command(s), в которое надо записать следующее:
Rcmd BATCH "$(FULL_CURRENT_PATH)" "$(FULL_CURRENT_PATH).Rout"
и сохранить эту команду под каким-нибудь понятным именем, например "run R".
После этого скрипт можно выполнять прямо из текстового редактора по нажатию клавиши F6.
вторник, 11 декабря 2007 г.
среда, 31 октября 2007 г.
Core-core Duo-duo
Иногда мне приходится работать со скриптами обработки многослойных изображений. Изображения мало того, что многослойные, но и каждый слой представляет собой картинку очень большого разрешения. Понятно, что попиксельная (повоксельная, да) обработка в этом случае занимает очень много времени. По крайней мере, занимала на старом компьютере, который имел классический одноядерный процессор с небольшой тактовой частотой.
Можете представить мою радость, когда однажды добрался я до компьютера с процессором в два ядра и оперативной памятью в два гигабайта. Ну, думаю, возьму какой-нибудь скрипт и обработаю им минут за двадцать хотя бы одну картинку...
Скрипт запустил, работа, кажется, пошла. Я выпил чаю, сбегал в магазин за сдобой, снова выпил чаю. Прошло полчаса, а скрипт все шуршал и шуршал. В конце концов ждать надоело, работа компьютера была почти аварийно остановлена. Оказалось, что обработано только несколько десятков строчек одного слоя в изображении!
И только потом я узнал, что эту же задачу решали на суперкомпьютере с более чем пятьюстами процессорами и, кажется, до конца не решили.
Легче мне, конечно, стало.