Итеративное назначение с использованием разных фреймов данных - PullRequest
0 голосов
/ 27 сентября 2019

Я создал пользовательскую функцию ...

Из вектора 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", который является строкой, а не числом.

1 Ответ

1 голос
/ 27 сентября 2019

Как только что ответил Винсент, вы можете составить список, список списков и т. Д. Это облегчит создание того, что вы хотите.

Я сделал для вас пример:

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

Затем вы можете получить x из времени i с помощью data[[i]]$x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...