Обычно, когда вы хотите просмотреть исходный код функции R, вы можете просто ввести ее имя в консоли и нажать клавишу ввода.Однако, когда эта функция написана на другом языке, таком как C, и подвергается воздействию R, вы в конечном итоге увидите (что-то вроде)
.Call(C_col2rgb, col, alpha)
, где R вызывает скомпилированный код.Чтобы увидеть исходный код таких функций, вы должны посмотреть исходный код пакета.Функция, о которой вы говорите, находится в пакете grDevices
, который является частью того, что часто называют «base R» (его не обязательно путать с пакетом R base
) - пакет поставляется со всеми Rустановки.
На GitHub есть зеркало исходного кода R по адресу https://github.com/wch/r-source, с которым я бы хотел посоветоваться, если мне нужно взглянуть на исходный код R.Код для пакета grDevices
находится по адресу https://github.com/wch/r-source/tree/trunk/src/library/grDevices.
Как я уже упоминал в комментариях, вы можете найти код для C_col2rgb()
в r-source/src/library/grDevices/src/colors.c
.Тем не менее, там, похоже, это просто называется col2rgb()
.Это действительно то же самое?
Да .Если вы обратитесь к Запись R-расширений, раздел 1.5.4 , вы увидите, что
Файл NAMESPACE может содержать одну или несколько директив useDynLib, которые позволяют загружать общие объекты.... Использование аргумента .fixes позволяет автоматически добавлять префикс к зарегистрированным символам, что может быть полезно при работе с существующим пакетом.Например, пакет KernSmooth имеет
useDynLib (KernSmooth, .registration = TRUE, .fixes = "F _")
, что делает переменные R соответствующими символам Фортрана F_bkde и т. Д., Ипоэтому избегайте столкновений с кодом R в пространстве имен.
Мы можем видеть в файле NAMESPACE
для grDevices
useDynLib(grDevices, .registration = TRUE, .fixes = "C_")
Итак, функции C, которые доступны из этого пакета, будут все должны иметь префикс C_
, даже если их нет в исходном коде C.Это позволяет вам вызывать функции R и C col2rgb
без каких-либо проблем.