将不同函数的结果以 R 方式传递给函数

Passing results of different functions to a function the R way

我有多个函数,想将它们的结果传递给另一个函数(多个函数调用)。这样做的 R 方式是什么?

例如

x = function_x() { ... return vector}
y = function_y() { ... return vector}
z = function_z() { ... return vector}
func_abc(x)
func_abc(y)
func_abc(z)

目前我正在创建一个函数向量并使用 lapply 将它们的结果传递给多个函数调用:

function_x() { ... return vector}
function_y() { ... return vector}
function_z() { ... return vector}

my_vectors <- c(function_x(), function_y(), function_z())

lapply(my_vectors, function_abc(v) {
  ... do something on v
})

更具体地说,function_x、_y 和 _z returns 向量。我想对他们返回的向量进行一些过滤,这是我的 function_abc。然后组合起来。

试试这个例子:

#set seed to make it reproducible
set.seed(1234)

#define functions
function_x <- function(){ sample(1) }
function_y <- function(){ sample(2) }
function_z <- function(){ sample(3) }

#get function results into a list
myList <- list(function_x(), function_y(), function_z())

#loop through the list and row bind
do.call(rbind,
  lapply(myList, function(v) {
    #some calculations, result is a data.frame
    res <- cbind.data.frame(input=v, calculation=v*2)
    return(res)
  }))

#result
#  input calculation
#1     1           2
#2     2           4
#3     1           2
#4     2           4
#5     3           6
#6     1           2

以上可以简化为:

#define function for calculations
function_abc <- function(x){ x * 2 }

#loop
unlist(lapply(list(function_x(), function_y(), function_z()), function_abc))

#result
# [1] 2 4 2 4 6 2