2016-09-14 15 views
5

Tôi đang cố gắng hiểu đối tượng call là gì trong R và ép buộc nó thành ký tự. Tuy nhiên những nỗ lực của tôi đã vô ích cho đến nay.ép buộc một cuộc gọi hàm thành một chuỗi

myFun=function(a=1) { x=sys.call() return(as.character(x)) } 

x=myFun(a=2) # here I would like to get the string "myFun(a = 2)" 

Tôi cũng đang tìm kiếm chức năng in cuộc gọi hàm (ví dụ như print.call). Nhưng tôi không thể tìm thấy nó.

Có ai ở đây biết cách đối tượng cuộc gọi được in không?

+1

Có thể có một cách đơn giản hơn, nhưng 'myFun <- function (a = 1) {as.character (as.expression (sys.call()))} ' – alistaire

+0

' as.expression' thực hiện công việc, cảm ơn bạn @alistaire – RockScience

Trả lời

5

Chúng ta có thể sử dụng match.call() với deparse

myFun <- function(a=1) { 
      deparse(match.call())  
    } 

myFun(a=2) 
#[1] "myFun(a = 2)" 

Hoặc thay thế match.call() với sys.call() trong hàm

Các vấn đề liên quan