R迭代分配使用不同的数据帧

R iterative assign using different data frames

我做了一个用户定义的函数...

从矢量 x、y、f(x,y) returns (x,y,z) 的列表...

现在我想迭代

data1 <- f(x,y)
data2 <- f(data1$x, data1$y)
data3 <- f(data2$x, data2$y)
data4 <- f(data3$x, data3$y)

等等...

有没有办法为此做一个循环?

我试过使用粘贴功能

data1 <- f(x,y)
for (i = 2:10) {
    assign(paste("data",i,sep=""), f(paste("data",i-1,"$x",sep=""), paste("data",i-1,"$y",sep=""))
}

但由于输入变为 "data1$x" 而不是数字的字符串,因此出现错误。

正如 Vincent 刚刚回答的那样,您可以制作一个清单,以及清单的清单等。这样可以更轻松地制作您想要的东西。

我给你做了个例子:

x <- 1:10; y <- 11:20
f <- function(x, y) {return(list(x = x+1, y = y+1))}

data <- c()
data[[1]] <- f(x, y)
for(i in 2:10){
  data[[i]] <- f(data[[i-1]]$x, data[[i-1]]$y)
}

然后你可以用 data[[i]]$x 从时间 i 得到 x。