R非标准评估 - 传递清单

时间:2015-05-07 13:12:37

标签: r lazy-evaluation

如何使用NSE传递字符向量:

$.ajax({
  contentType: 'application/json',
  accept: 'application/json',
  url: '',
  headers: {
    "listkey":{"key1":"val1", "key2": "val2", "key3":"val3"}
  },
  dataType: 'json',
  cache: false,
  success: function(data) {
...

例如,

fun <- function(x){
  x_  <-deparse(substitute(x))
  print(x_)
}

fun_ <- function(x){
 do_something(x)
}

应打印将fun(x= a, b, c) 的参数解释为向量c(a,b,c)并将字符向量传递给x

fun_(x)

还有其他参数。

1 个答案:

答案 0 :(得分:3)

您不能在参数中使用逗号;逗号分开的参数。调用fun(x=a,b,c)将使用三个参数调用fun(),第一个命名,第二个未命名。如果您只想忽略名称x=,则可以使用

将不带引号的名称转换为字符串
fun <- function(...){
  x <- sapply(substitute(...()), deparse)
  fun_(x)
}

fun_ <- function(x) {
    print(x)
}

fun(a,b,c)
# [1] "a" "b" "c" 

fun_(c("a","b","c"))
# [1] "a" "b" "c"