我有一个值数据框,我想用它来构建参数,稍后发送到一个单独的函数 myFunction(name, size, nationality)。例如。
name <- c("Batman", "Superman", "HeMan")
size <- c("Med", "Tall", "Enormous")
nationality <- c("American", "Kryptonian", "Eternian")
argVals <- data.frame(name, size, nationality)
请注意,每一列都有一个合适的名称,我想将其用作稍后传递给 myFunction 的参数的名称,myFunction 需要这些正式参数中的每一个。
我不确定是否应该创建一个稍后传递给 myFunction 的字符串:
例如"name='Superman', size='Med', nationality='American'"
或者,如果我能找到一种方法将名称值直接传递给 myFunction。
我尝试过使用各种粘贴法术,但我认为一定有更简单的方法。谢谢。
注意:经过编辑以强调我对使用命名值调用函数的适当方式不够清晰。
最佳答案
如果您使用 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)
那么 do.call(foo,argVals[1,])
将使用指定的参数运行该函数。
关于r - 如何从参数值的 DataFrame 动态创建正式参数 (R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28666670/