我想使用字符串将函数分配给变量。 base
包中的get()
函数确实是我想要的差不多。例如,使用R的`get()`函数,同时使用包的条件
valueReadFromFile <- "median"
ds <- data.frame(X=rnorm(10), Y=rnorm(10))
dynamicFunction <- get(valueReadFromFile)
dynamicFunction(ds$X) #Returns the variable's median.
不过,我想其包资格的功能,所以,我不担心(一)与library()
加载功能的包,或(b)调用错误的函数在不同的包装中。
是否有一个强大的,程序化的方式,我可以使用它的包使用get()
(或某些类似的函数)来限定函数的名称?下面的代码不起作用,大概是因为get()
不知道如何解释包名称::
之前。
require(scales) #This package has functions called `alpha()` and `rescale()`
require(psych) #This package also has functions called `alpha()` and `rescale()`
dynamicFunction1 <- get("scales::alpha")
dynamicFunction2 <- get("psych::alpha")
谢谢@mnel。第一种方法完全避免“get()”很有趣。我想我会用第一种方式。我猜它可能会更健壮,因为它通过'substitute()'传递包和函数名。但这是一个非常不明智的猜测。 – wibeasley
我很高兴你收录了第二种方法。 ''''里面的'substitute()'调用意味着我不能直接传递变量,但是这个工作原理是这样的: ''''x_label_split < - strsplit(“scales :: comma”,split =“::”)[[1 ]]'; 'getExportedValue(x_label_split [1],x_label_split [2])' – wibeasley