我有一个很大的函数,用于将变量类型分配给数据框中的列。
setVarType <- function(x){
x$Species <- as.factor(as.character(x$Species))
x$Sepal.Length <- as.numeric(as.character(x$Sepal.Length))
return(x)
}
df1 <- setVarType(df1)
我刚刚创建了一个新版本的数据框,并且该函数正在崩溃,因为新数据集中缺少某些列名。有没有办法查看函数的结构并将所需的变量名称提取到向量中,以便我可以执行以下操作:
setdiff(functionVariables, dataFrameVariables)
答案 0 :(得分:2)
我认为这就是你要找的东西:
getLValueDollarRHS <- function(pt) do.call(c,lapply(as.list(pt),function(pte) if (is.call(pte)) c(if (pte[[1]] == '<-' && is.call(pte[[2]]) && pte[[2]][[1]] == '$') as.character(pte[[2]][[3]]),getLValueDollarRHS(pte))));
getLValueDollarRHS(body(setVarType));
## [1] "Species" "Sepal.Length"
演示内置函数:
getLValueDollarRHS(body(xtabs));
## [1] "data" "..." "exclude" "drop.unused.levels" "sparse"