R:如何将表达式的值传递给拒绝表达式参数的函数?

时间:2016-09-23 23:09:07

标签: r function types attributes evaluation

我的代码,现在已修复,遭遇了与我想象的不同的缺陷,与我的标题问题无关。真正的问题及其解决方案由@Roland提供,如下所示。

我有一对函数,如下所示,它们一起应该返回attrC中命名的列属性值的列表。运行时,R对象“attr(x,其中= get(”attrC“),精确= TRUE):'哪个'必须是模式字符”。

我尝试用get(“attrC”)和eval(attrC)替换attrC。两者都不起作用。

我有三个密切相关的问题。一个好的答案将回答这三个问题。

  1. 如何使此特定功能起作用?

  2. 如何从R函数或其文档的形式告诉需要属于给定类型的参数何时接受一个评估该类型的变量或表达式?

  3. 如果(1.)的答案还没有提供它:是否有一种通用的方法来提供一个需要给定类型的参数的函数,并且不接受评估该类型的名称或表达式,用这个名字或表达的价值。

  4.     ColAttr <- function(x, attrC, ifIsNull) {
    # Returns column attribute named in attrC, if present, else isNullC.
      atr <- attr(x, attrC, exact = TRUE)
      atr <- if (is.null(atr)) {ifIsNull} else {atr}
      atr
    }
    
    AtribLst <- function(df, attrC, isNullC){
    # Returns list of values of the col attribute attrC, if present, else isNullC
      lapply(df, ColAttr, attrC=attrC, ifIsNull=isNullC)
    }
    
    stub93 <- AtribLst(cps_00093.df, attrC="label", isNullC=NA)
    

0 个答案:

没有答案