2009-11-10 2 views
21

Я работал над несколькими пакетами R для некоторых общих инструментов, которые в настоящее время недоступны в R: блоги, доставка отчетов, ведение журнала и планирование. Это заставило меня задуматься: какие самые важные вещи люди пожелали существуют в R, которые в настоящее время недоступны?Какой полезный пакет R в настоящее время не существует?

Я надеюсь, что мы сможем использовать это, чтобы выявить некоторые пробелы и, возможно, работать на них совместно.

+5

Восстановление операционной системы в R, а? –

+14

Является ли моя фамилия Кампос? Дирк, мы все знаем, что если вы собираетесь перестроить операционную систему, сначала вы должны разработать свой собственный язык (желательно из сборки), а затем построить его с помощью собственного синтаксиса. – Shane

+10

Я думаю, что у меня есть экзистенциальная проблема с этим вопросом. Пакет R, который не существует, не может быть полезен. – Nosredna

ответ

4

Естественный интерфейс к платформе .NET был бы потрясающим, хотя я подозреваю, что это может быть большой работой.

EDIT: Подсветка синтаксиса изнутри RGui также будет замечательной.

ДРУГОЕ ИЗМЕНЕНИЕ: R.NET теперь существует для интеграции R с .NET.

+0

Не уверен в идее .Net - это слишком ориентировано на платформу, тогда как одна из сильных сторон системы R (в широком смысле) заключается в том, что основная платформа в основном абстрагируется. –

+0

@ Dirk: На самом деле нужно было бы работать с Mono, чтобы быть кросс-платформенным и соответствовать природе с открытым исходным кодом R. –

+0

Mac RGui выделяет, а JGR тоже работает. –

10

Интерфейсы к любой из новых фальсифицированных баз данных «Web 2.0», в которых используются пары «ключ-значение», а не стандартная RDMS. Неполный список (в алфавитном порядке) будет

, и было бы неплохо, если бы у нас была абстракция DBI. Джефф начал с RBerkeley, но использовал бэкэнд Oracle BerkeleyDB в старой школе, а не одну из этих новых вещей.

+2

Теперь есть rredis! И я уверен, что интерфейсы для других БД существуют. – Zach

+0

мы только что слышали о rmongoDB: https://github.com/gerald-lindsly/rmongodb – baptiste

+0

https://github.com/RockScience/Rpymongo/blob/master/Rpymongo.r - это интерфейс для Mongodb – RockScience

4

Существует несколько библиотек для взаимодействия с базой данных в целом, и нет библиотеки ORM.

RMySQL полезен, но вы должны писать SQL-запросы вручную, и нет возможности их генерировать, как в ORM. Morevoer, он специфичен только для MySQL.

Еще один набор библиотек, который R еще не имеет, для меня это хорошая система для чтения аргументов командной строки: есть R getopt, но это не похоже, например, argparse в python.

+0

Для общей базы данных вы изучали DBI, RODBC или JODBC? – Shane

+0

Помимо getopt, есть также пакет optparse, который недавно прибыл на CRAN из R-Forge. –

+0

Уит Армстронг также создал unifieddbi: http://github.com/armstrtw/unifieddbi. – Shane

12

Пакет Real-Time R был бы моим выбором, возможно, с помощью C Streaming.

Также я хотел бы получить более надежный пакет веб-разработки. Ничего такого масштабного, как Ruby on Rails, но немного лучше, чем Sweave в сочетании с R2HTML, который может работать на RApache. Я думаю, что это должно быть огромной областью внимания для R в целом.

Я понимаю, что LaTeX - лучшая разметка для определенных академий, но в целом я считаю, что HTML должен быть языком разметки по выбору. Больше нужно делать с точки зрения R Web Apps, поэтому приложения могут размещаться на огромной ОЗУ удаленно, а R может использоваться для приложений данных SaaS и других графических решений.

+0

+1 к этой идее - это то, о чем я часто думал в последнее время. – Sharpie

1

Собственный интерфейс .NET для RGUI. R (D) Com основан на COM, и он позволяет только обменивать матрицы, а не более сложные структуры.

16

Я бывший наркоман Mathematica, и одна вещь, которую я действительно пропустил, это интерфейс стиля ноутбука. Когда я проводил исследования с помощью ноутбуков, бумаги писали бы сами, как и мой анализ. Но теперь, когда я использую R, я считаю, что документирование моей работы было довольно утомительным.

Для людей, которые не знакомы с Mathematica, у вас есть документы, называемые «ноутбуками», которые могут содержать код, текст, уравнения и результаты выполненного кода (которые могут быть уравнениями, текстом, графикой или интерактивными инструментами) , Все может быть аккуратно организовано в стилизованные подразделы или разделы, которые сжимаются. У вас может быть несколько открытых документов, которые интегрируются с одним общим ядром.

Хотя я не думаю, что полномасштабный интерфейс стиля Mathematica абсолютно необходим, некоторая интерактивная система документов, которая поддерживала бы текст (для описания), код, вывод кода и выход встроенного изображения, была бы настоящим благом для исследователей ,

+2

Я думаю, что это отличная идея. Я думал об этом прошлой ночью. Matlab имеет ту же функциональность (вы можете запустить код Matlab в документации). Это будет большой проект. Просто подумав о реализации, лучше всего сделать это с помощью javascript в существующей структуре html, которую они разрабатывают. Таким образом, любой выделенный раздел может быть выделен и выполнен. – Shane

+1

В проекте SAGE (http://www.sagemath.org) уже реализовано что-то подобное: R является одним из многих поддерживаемых бэкэндов. Хотя всегда есть возможности для улучшения! – Sharpie

+0

Мне нравится эта идея, и с пакетами типа 'brew' только пользовательский интерфейс действительно отсутствует для достижения этой функциональности. Возможно, наиболее легко реализовать в веб-браузере, таком как Sage, или с R-studio? – baptiste

8

Устройство вывода, которое создает код Javascript, возможно, используя библиотеку протовиз.

+7

Я создаю это здесь: http://code.google.com/p/rwebvis/ – Shane

+0

Это хорошая новость! Это выглядит очень многообещающим –

2

Я бы хотел, чтобы пользователи могли вставлять другой язык программирования в R более простым способом. Я даю это в качестве примера, в некоторых вариантах реализации общего LISP можно написать функцию с внедренным кодом C, например так:

(defun sample (x) 
    (ffi:c-inline (n1 n2) (:int :int) (values :int :int) "{ 
    int n1 = #0, n2 = #1, out1 = 0, out2 = 1; 
    while (n1 <= n2) { 
     out1 += n1; 
     out2 *= n1; 
     n1++; 
    } 
    @(return 0)= out1; 
    @(return 1)= out2; 
    }" 
    :side-effects nil)) 

Было бы хорошо, если можно было бы написать функцию R со встроенным C или LISP кода (более заинтересованные в последнем) аналогичным образом.

+5

Это существует. Посмотрите на inline. – Shane

+0

Является ли это cfunction {inline}? Он поддерживает c, cpp, C++, f, f95, objc, objcpp, objC++. Это довольно приятно. Хорошо добавить Lisp в список. – francogrex

5

как программист и писатель библиотек для коллег, мне определенно не хватало регистрационного пакета, я искал google и просил около here too, а затем написал сам. он находится на r-forge, here, и это называется «вырубка леса» :)

Я использую его, и я, очевидно, все еще его разрабатываю.

1

Я бы очень хотел использовать профилировщик линии. Это существует в Matlab и Python и очень полезно для поиска битов кода, которые занимают много времени или выполняются больше (или меньше), чем ожидалось. Многие из моих кодов включают в себя оптимизацию функций и сколько раз что-то итерации могут быть неизвестны заранее (хотя большинство итераций ограничены или указаны).

Стек вызовов полезен, если весь ваш код находится в R и очень прост, но как I recently posted about it, он требует много усилий, если ваш код является сложным.

Достаточно просто разработать профилировщик строк для заданного бита кода. Наивный способ - индексировать каждую строку (или только предварительно определенные разделы) и вставлять вызов в журнал proc.time() этой строки. В цикле я просто перечисляю разделы кода и сохраняю в двумерном списке значения proc.time для раздела i на итерации k. [См. Обновление ниже: на самом деле это не способ сделать профилировщик строк для всех видов кода.]

Можно использовать такой инструмент для поиска горячих точек, аномалий (например, код, который должен быть O (n), но на самом деле O (n^2)), код, который может извлечь выгоду из memoization (профилировщик строк не говорит вам об этом, но он позволяет вам знать, где искать), код, который ошибочно находится внутри цикла, и многое другое.

Обновление 1: Вставка линии синхронизации между каждой функциональной строкой немного ошибочна: определение строки кода не просто кода, разделенного пробелом. Возможность анализа кода в АСТ необходима для того, чтобы знать, где начинаются и заканчиваются операции.Как было сказано в некоторых ответах на this question, есть несколько инструментов (а именно showTree и walkCode в пакете codetools) для этого. Простое применение регулярного выражения к исходному коду было бы очень плохим делом.

3

A FRAQ пакет для вопросов, связанных с FRequently, a la fortune(). R-помощь будет очень весело:. «Попробуйте это, library(FRAQ); faq("lattice won't print") и т.д.

See also.

+0

также каждый пакет мог определить собственный список записей faq. Учитывая сходство с состояниями, возможно, стоит рассмотреть мета-пакет, который охватывает общую концепцию. – baptiste

3

wiki пакет, который добавляет вики-как документацию на пакеты R Вы хотите иметь inst/wiki подкаталог с простыми текстовыми файлами в markdown, asciidoc, текстиль, с внедренным кодом R. С правильным заклинанием эти файлы будут выполнены (подумайте brew и/или asciidoc) и соответствующий вывод, загруженный в данный репозиторий онлайн (github, googlecode и т. д.), . Еще одна функция могла позаботиться о синхронизации сделанных изменений , обычно через svn или git.

Внезапно у вас есть вики-документация для вашего пакета с воспроизводимыми примерами (может даже быть подключена к R CMD check).

EDIT 2012:

... и теперь knitr пакет будет сделать этот процесс еще проще и аккуратнее

+0

Это было бы FANTASTIC, если бы никакая другая причина, кроме статистической вики, модерируемой сообществом R, могла быть намного лучше статистических записей в Википедии. Я предполагаю, что записи могут быть модерированы сопровождающими пакетов. – Iterator

+0

Спасибо за обновление - 'knitr' выглядит интересным. – Iterator

Смежные вопросы