Как получить исходный код C / C ++ для вторичной функции R? - PullRequest
0 голосов
/ 28 сентября 2018

Мне было интересно, как правильно получить исходный код C / C ++ для любой вторичной (отличной от Примитивной / Внутренней) функции в R. Смежные вопросы: здесь , здесь , здесь и здесь :

Мой отличается, так что я использовал " вторичный " в моем вопросе.Например, функция read.table () в консоли R , которую я получил:

>?read.table

read.table                package:utils                R Documentation

Data Input

Description:

     Reads a file in table format and creates a data frame from it,
     with cases corresponding to lines and variables to fields in the
     file.

Usage:
     read.table(file, header = FALSE, sep = "", quote = "\"'",
        ......

Или

> getAnywhere(read.table)
A single object matching ‘read.table’ was found
It was found in the following places
  package:utils
  namespace:utils
with value

function (file, header = FALSE, sep = "", quote = "\"'", dec = ".", 

     ......

    attr(data, "row.names") <- row.names
    data
}
<bytecode: 0x560ff88edd40>
<environment: namespace:utils>

Поиск ввеб-сайт, который я получил:

https://svn.r -project.org / R / trunk / src / library / utils / src / utils.c

https://svn.r -project.org / R / trunk / src / library / utils / src / utils.h

Как получить C / C ++ исходный код функция read.table вместо R кода, если это разумно?

1 Ответ

0 голосов
/ 28 сентября 2018

Исходный код R для поиска по адресу https://github.com/wch/r-source действительно полезен для этого:

  • Сначала мы можем найти определение read.table
  • Считывание фактических данных выполняется функцией scan, которая в итоге использует

    .Internal(scan(file, what, nmax, sep, dec, quote, skip, nlines,
    [...]
    
  • Now scanis сопоставлено в do_scan

Итак, вы здесь: Базовая реализация C для read.table может быть найдена в src/main/scan.c, начиная сфункция do_scan.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...