Передайте файловое соединение из R в интерфейс .Call
Мне было интересно, можно ли создать файловое соединение в R, а затем передать это файловое соединение в функцию C, используя интерфейс R.Call. Например, рассмотрим функцию R следующим образом:
write2file <- function(object, filename, sep, ...){
...
fileCon = file(filename, "a") #created a file connection from character filename
...
.Call("Cfunction", object, fileCon, ...) #C function that takes in a file connection
}
Тогда функция C будет примерно такой:
#include <R.h>
#include <Rinternals.h>
SEXP Cfunction(SEXP object, SEXP filecon){
...
*filecon_in_c = SOMETHING(filecon);
fputs(something, filecon);
...
}
Мы можем преобразовать целые числа R с помощью INTEGER(), числа R в удвоения с помощью REAL() или CHAR() для символьных векторов, но как насчет файловых соединений?