如何从参数值(R)的DataFrame动态创建形式参数

时间:2015-02-23 03:53:26

标签: r

我有一个值的数据框,我想用它来构建参数,以便稍后发送到一个单独的函数myFunction(名称,大小,国籍)。例如。

name <- c("Batman", "Superman", "HeMan")
size <- c("Med", "Tall", "Enormous")
nationality <- c("American", "Kryptonian", "Eternian")
argVals <- data.frame(name, size, nationality)

请注意,每个列都有一个适当的名称,我希望将其用作稍后要传递给myFunction的参数名称,该函数需要每个正式参数。

我不确定是否应该创建一个后来传递给myFunction的字符串:

e.g。 &#34; name =&#39;超人&#39;,size =&#39; Med&#39;,国籍=&#39;美国&#39;&#34;

或者,如果我能找到一种方法直接将名称值传递给myFunction。

我尝试过使用各种粘贴方法,但我认为必须有一种更简单的方法。感谢。

注意:编辑以强调我对使用命名值调用函数的适当方法缺乏清晰度。

1 个答案:

答案 0 :(得分:3)

如果您使用stringsAsFactors=FALSE来阻止argVals的元素转化为因素:

argVals <- data.frame(name, size, nationality,
                        stringsAsFactors=FALSE)

然后

as.list(argVals[1,])
## $name
## [1] "Batman"
## $size
## [1] "Med"
## $nationality
## [1] "American"

将生成具有适当值的命名列表,这可能是您想要的。 (或者你可以使用lapply(as.list(argVals[1,]),as.character),但它可能更简单/更清楚地阻止列首先被制成因子。)如果你有一个函数foo(name,size,nationality)那么{{1将使用指定的参数运行该函数。