Я искал довольно много и не нашел вопроса, который решает эту проблему, но если на это был дан ответ, простите меня, я все еще довольно зеленый, когда дело доходит до кодирования вообще , У меня есть кадр данных с большим количеством переменных, которые я хотел бы объединить. & создавать новые переменные на основе имен, которые я поставил во втором кадре данных в цикле. Кадр данных formulas
должны создавать & столбцы вызовов из основного фрейма данных data
Вызов и создание новых столбцов на основе строки
USDb = c(1,2,3)
USDc = c(4,5,6)
EURb = c(7,8,9)
EURc = c(10,11,12)
data = data.frame(USDb, USDc, EURb, EURc)
Теперь я хотел бы создать новый столбец data$USDa
как определено
data$USDa = data$USDb - data$USDc
и так далее для евро и других переменные. Это достаточно легко сделать вручную, но я хотел бы создать цикл, который вытягивает имена из formulas
, что-то вроде этого:
a = c("USDa", "EURa")
b = c("USDb", "EURb")
c = c("USDc", "EURc")
formulas = data.frame(a,b,c)
for (i in 1:length(formulas[,a])){
data$formulas[i,a] = data$formulas[i,b] - data$formulas[i,c]
}
Очевидно data$formulas[i,a]
это возвращает NULL
, поэтому я попытался data$paste0(formulas[i,a])
и возвращает Error: attempt to apply non-function
Как я могу заставить эти строки распознаваться как переменные таким образом? Благодарю.
да, это решение работало на фактические данные, которые у меня есть, и для меня кажутся более элегантными, чем циклические. Спасибо за руководство. – chrstnsn