Предполагая, что dput
работает нормально для ваших объектов, и что мы можем предположить, что все необходимые библиотеки загружены и / или определены функции, почему бы просто не создать строку вызова функции следующим образом:
Define ' fput 'для генерации вставляемой строки, которая будет реплицировать вызов функции:
fput = function( fun_string, ... ) {
args=as.list(match.call(expand.dots=F))[["..."]]
arg_strings=lapply(args,function(arg) capture.output(do.call(dput,list(arg),envir=parent.frame())))
arg_string=paste(arg_strings,collapse=",")
paste(fun_string,"(",arg_string,")")
}
Пример:
Пример данных:
a=1:10
b=a^2
Пример вызова функции для репликации как пастообразной строка:
plot(a,b)
Вызов fput ():
fput( "plot", a, b )
Вывод:
[1] "plot ( 1:10,c(1, 4, 9, 16, 25, 36, 49, 64, 81, 100) )"
Проверка: копирование-вставка вывода генерирует тот же результат, что и plot (a , б)