Function R中一个函数内的多个函数

Function R中一个函数内的多个函数,function,dataframe,Function,Dataframe,我想创建一个名为g的函数,它依次包含另外三个函数f1和f2。两个函数f1、f2中的每一个都返回一个数据帧。我希望函数g返回从f1和f2获得的两个数据帧。以下是我运行的代码: g首先,当调用函数f1和f2时,需要将其返回值存储在某个位置 其次,不清楚为什么要在g内部使用f1:它似乎与g不共享任何状态,因此它可以与g一起独立定义,而不是在g内部。也就是说,如果它只在g中使用,那么这在某种程度上是一个风格问题 下面是我如何编写您的代码: g <- function (n, a, b, c, d,

我想创建一个名为g的函数,它依次包含另外三个函数f1和f2。两个函数f1、f2中的每一个都返回一个数据帧。我希望函数g返回从f1和f2获得的两个数据帧。以下是我运行的代码:


g首先,当调用函数
f1
f2
时,需要将其返回值存储在某个位置

其次,不清楚为什么要在
g
内部使用
f1
:它似乎与
g
不共享任何状态,因此它可以与
g
一起独立定义,而不是在
g
内部。也就是说,如果它只在
g
中使用,那么这在某种程度上是一个风格问题

下面是我如何编写您的代码:

g <- function (n, a, b, c, d, e) {
    f1 <- function (n, a, b, c, d, e) {
        X <- a * matrix(sample(0 : 1, n, replace = TRUE), nrow = n)
        Y <- (b * c - d) * matrix(sample(1 : 10, n, replace = TRUE),nrow = n)
        Z <- (a * e) * matrix(sample(0 : 12, n, replace = TRUE), nrow = n)
        data.frame(X, Y, Z))
    }

    f2 <- function(n, a, b) {
        G <- varpredict - a
        X <- matrix(sample(0 : 1, n, replace = TRUE), nrow = n) + square_res
        Y <- b * matrix(sample(1 : 10, n, replace = TRUE), nrow = n)
        Z <- (a * b) * matrix(sample(0 : 12, n, replace = TRUE), nrow = n) - G
        data.frame(X, Y, Z)
    }

    model <- lm(Y ~ 0 + X + Z, data = f1(n, a, b, c, d, e))
    varpredict <- model$fitted.values
    square_res <- model$residuals ^ 2
    list(f1(n, a, b, c, d, e), f2(n, a, b))
}

非常感谢康拉德的建议。你的代码是完美的。我还有一个问题。在我的代码中,我需要命名每个数据帧的列。你知道我如何处理你的代码吗?@AntoineDedewanou代码中的列将自动命名为
X
Y
Z
。如果要以不同的方式命名,请使用命名参数:
data.frame(your=X,name=Y,here=Z)