Создать переменные во фрейме данных с помощью цикла - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть основной фрейм данных (mydata) и два вторичных (df1, df2), такие как:

x <- c(1, 2, 3, 4, 5)
y <- c(5, 4, 3, 2, 1)
mydata <- data.frame(x)
df1 <- data.frame(y)
df2 <- data.frame(y)
df2$y <- y+1 #This way, the columns in the df have the same name but different values.

Я хочу создать новые столбцы в mydata на основе формулы с переменными в df1 и df2, например:

mydata$new1 <- mydata$x*df1$y
mydata$new2 <- mydata$x*df2$y

Есть ли способ сделать это с помощью цикла for? Вот что я имел в виду:

for (i in 2) {
  mydata$paste0("new", i) <- mydata$x*dfpaste0(i)$y
}

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Мы также можем использовать mget, чтобы получить все значения объекта в list и умножить на соответствующие vector

mydata[paste0("new", 1:2)] <- mydata$x * data.frame(mget(paste0("df", 1:2)))
0 голосов
/ 10 ноября 2018

Что-то вроде:

for (i in 1:2) {

  mydata[[as.symbol(paste0('new', i))]] <- mydata$x*get(paste0("df", i))$y

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