मैं आने वाले तर्कों को कैप्चर करना चाहता हूं कि मैं एक समारोह में जा रहा हूं। मैं यह कैसे कर सकता हूँ? नीचे दिया गया कार्य वह नहीं है जो मैं चाहता हूं। मुझे जो आउटपुट चाहिए वह "Using mtcars and am" है। मैं इस धारणा के तहत था कि rlang इसमें मदद कर सकता है, लेकिन मुझे काम पूरा करने के लिए कोई फ़ंक्शन नहीं मिला है।

fx_capture<- function(fx_data, fx_var) {
  name_data <- quote(fx_data)
  name_var  <- quote(fx_var)
  paste("Using", name_data, "and", name_var)
}

fx_capture(mtcars, am)
> "Using fx_data and fx_var"
3
kputschko 10 सितंबर 2020, 21:52

2 जवाब

सबसे बढ़िया उत्तर

हम deparse(substitute का उपयोग कर सकते हैं

fx_capture<- function(fx_data, fx_var) {

     name_data <- deparse(substitute(fx_data))
     name_var <- deparse(substitute(fx_var))

     paste("Using", name_data, "and", name_var)
}

fx_capture(mtcars, am)

या match.call के साथ

fx_capture<- function(fx_data, fx_var) {

   paste0("Using ", do.call(paste, c(lapply(match.call()[-1], 
              as.character), sep = ' and ')))
  
  
}

fx_capture(mtcars, am)
4
akrun 10 सितंबर 2020, 21:55

यहां sys.call का उपयोग करने वाला एक विकल्प दिया गया है

fx_capture<- function(fx_data, fx_var) {
  paste0("Using ", paste0(sys.call()[-1],collapse = " and "))
}

ऐसा है कि

> fx_capture(mtcars, am)
[1] "Using mtcars and am"
1
ThomasIsCoding 10 सितंबर 2020, 22:02