C для программистов R - рекомендуемый ресурсы/подходы однажды мимо [закрытых] основ

Можно ли использовать prototype.js? Раз так Вы могли использовать String.gsub, как

var myStr = "a day in a life of a thing";
 var replace = "a";
 var resultString = myStr.gsub(replace, "g");
 // resultString will be "g day in g life of g thing"

Он также возьмет регулярные выражения. Мне это - один из более изящных способов решить его. prototypejs gsub документация

29
задан Heather Turner 7 June 2013 в 16:38
поделиться

5 ответов

Я тоже боролся с этой проблемой.

Если проблема заключается в улучшении владения языком C, существует множество списков книг по этой теме. Все они начинаются с K&R. Мне понравились "Эксперт по программированию на языке С" П. ван дер Линдена и "Учебник по Си" С. Прата. Любая ссылка на стандартную библиотеку C работает.

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

Если проблема в том, чтобы связать C ++ с R или развить навыки C ++, я не могу ответить, поскольку я не использую много C ++. Для меня хорошей отправной точкой был "C ++ - основной язык" (О'Рейли). Очень просто, примитивно, но полезно для выходцев из C.

14
ответ дан 28 November 2019 в 01:46
поделиться

That is a very interesting question. As it happens, I had learned C and C++ before moving to R so that may have made it "easier" for me to add C/C++ to R.

But even with that, I would be among the first to say that adding pure C to R is hellishly complicated because of the different macros and R-internals at the C level that you need to learn.

Which leads me to my favorite argument: Use an additional abstraction layer such as the Rcpp package. It hides a lot of the nasty details. And I hope that you don't need to know a lot of C++ to make use of it. One example of a package using it is the small earthmovdist package on R-Forge which uses Классы-оболочки Rcpp для взаимодействия с одной конкретной метрикой.

Редактировать 1: Например, см. основную функцию earthmovdist здесь , которая должна быть достаточно простой для чтения, возможно, с (коротким) Rcpp руководство по пакету классов оболочки по адресу на одной стороне.

Редактировать 2: Три быстрые причины, по которым я считаю C ++ более подходящим и R-подобным :

  • использование классов-оболочек Rcpp означает, что вы никогда не должны использовать PROTECT и UNPROTECT, что является частым источником ошибок и кучи повреждение, если не отображено

  • с использованием Rcpp и с классами контейнеров STL, такими как vector и т.д., означает, что вам никогда не придется явно вызывать malloc () / free () или new / delete , что устраняет еще один частый источник ошибок.

  • Rcpp позволяет обернуть все в try / catch блокирует на уровне C ++ и сообщает об исключении обратно в R --- так что никаких внезапных ошибок сегментации и программных смертей.

При этом выбор языка является очень личным решением, и многие пользователи конечно, вполне устраивает интерфейс нижнего уровня между C и R.

17
ответ дан 28 November 2019 в 01:46
поделиться

My primary recommendation is to look at other packages. Needless to say, all packages don't use C code, so you will need to find examples that do. You can download the source code for all packages off CRAN, and in some instances, you can also browse them on R-Forge. Some R projects are also maintained on Google Code or sites like github (for instance, ggplot2). You will find the C code in the "src" directory.

In general, think about what you're trying to accomplish, and then look at packages that do similar things.

The "C Programming Language" book is probably still the most widely used, so you may want to have that on your bookshelf. The following free book is also a useful resource: http://publications.gbdirect.co.uk/c_book/

9
ответ дан 28 November 2019 в 01:46
поделиться

" Какая самая лучшая книга для изучения Си? " является вечным SO вопросом . (Средняя ссылка, вероятно, лучшая.)

Что касается специфичных для R способов изучения C, я счел полезным загрузить исходный код R и взглянуть на некоторый .Internal код.

РЕДАКТИРОВАТЬ : Кто-то еще только что спросил «Что читать после K&R?»

3
ответ дан 28 November 2019 в 01:46
поделиться

Если ваша цель - использовать C для устранения узких мест, вам понадобится хорошая числовая библиотека на C. Их много, но я нашел gsl (Научная библиотека GNU) очень полезной .

http://www.gnu.org/software/gsl/

Существует также классическая книга «Численные рецепты на языке C», в которой дается обзор важных числовых методов (хотя я не рекомендую использовать их код. дословно).

0
ответ дан 28 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: