R 在不改变函数调用的情况下,从单个对象向多个参数提供参数?
有没有办法将多个输入作为单个对象提供给函数 例子 假设一个函数需要2个输入R 在不改变函数调用的情况下,从单个对象向多个参数提供参数?,r,R,有没有办法将多个输入作为单个对象提供给函数 例子 假设一个函数需要2个输入 funct <- function(x, y) { x * y } funct(2, 7) # [1] 14 从你的问题中,我知道你需要用一个参数把x,y的值传递给函数 实现这一点的最佳方法是传递列表或字典,并在函数中使用它们: 如果将其作为列表或数组传递,请执行以下操作 `funct <- function(x) { x[[1]] * x[[2]] }` `inputs <- list(
funct <- function(x, y) {
x * y
}
funct(2, 7)
# [1] 14
从你的问题中,我知道你需要用一个参数把x,y的值传递给函数 实现这一点的最佳方法是传递列表或字典,并在函数中使用它们: 如果将其作为列表或数组传递,请执行以下操作
`funct <- function(x) {
x[[1]] * x[[2]]
}`
`inputs <- list(2, 7)
funct(inputs)`
`funct@David实现了相同的功能,但不是以我需要的方式实现的(我只需要通过更改输入来实现),因为我无法控制函数或函数的调用方式输入您可能可以执行funct(c(2,7)[1],c(2,7)[2])
。我需要强调的是函数及其调用方式无法更改,它将始终是funct(输入)
。我唯一可以更改的是input
对象(对于任何对象),我想初步的问题是“是否有任何方法(任何方法)可以为一个期望为2的函数提供1个输入?”您好,谢谢尝试。这两种方法都涉及改变功能。我无法更改函数或其调用方式(即funct(inputs)
)感谢您的建议,我认为您没有阅读最后一行可以使用现有函数的内容。尝试第二种解决方案涉及更改函数(我无法做到),但是如果我们尝试不更改我们得到的函数:funct(inputs)中的错误:参数“y”丢失,没有默认值。我觉得这很酷,你可以在R里做一个杂烩,但我不知道。您可以单独获得我的支持,即使它不能解决当前的问题do.call(funct,list(2,7))
与您现有的函数一起工作。我在记录的最后一行提到过,我不认为我所要求的是可能的,但我要问的是,万一有什么我没有发现的方法。我首先尝试的是一个向量和一个列表,散列是一个很棒的主意。也许这是不可能的。。
funct(inputs)
# [1] 14
`funct <- function(x) {
x[[1]] * x[[2]]
}`
`inputs <- list(2, 7)
funct(inputs)`
`funct <- function(input) {
library(hash)
input[["x"]] * input[["y"]]
}`
`library(hash)
inputs <- hash()
inputs[["x"]] <- 2
inputs[["y"]] <- 7
funct(inputs)`