R 使用不同数据框进行迭代分配



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

从向量 x, y, f(x,y(返回 (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",这是字符串而不是数字。

正如文森特刚刚回答的那样,你可以列出一个列表,一个列表列表等。这将使生产您想要的东西变得更加容易。

我给你举了一个例子:

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)
}

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

最新更新