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

问题描述 投票:0回答:1

我做了一个用户定义的功能...

从向量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”,它不是字符串,所以会出错。

r loops iteration assign
1个回答
1
投票
正如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。
© www.soinside.com 2019 - 2024. All rights reserved.