【发布时间】:2017-01-18 22:29:26
【问题描述】:
我进行了相当多的搜索,但没有找到解决此问题的问题 - 但如果已经回答,请原谅我,总的来说,我在编码方面仍然很年轻。我有一个包含大量变量的数据框,我想根据我在循环中放入第二个数据框的名称组合并创建新变量。数据框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
对于 EUR 和其他变量,依此类推。这很容易手动完成,但我想创建一个循环,从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
我怎样才能让这些字符串以这种方式被识别为变量?谢谢。
【问题讨论】: