Function R中一个函数内的多个函数
我想创建一个名为g的函数,它依次包含另外三个函数f1和f2。两个函数f1、f2中的每一个都返回一个数据帧。我希望函数g返回从f1和f2获得的两个数据帧。以下是我运行的代码: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
时,需要将其返回值存储在某个位置
其次,不清楚为什么要在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)
。