这个循环正确地创建了 13 个 df 命名的 bond1,...,bond13 并为它们分配了来自 function1 的值。现在我需要使用 function2 和另外两个 df 创建 13 个名为 spread1, ..., spread13 的 DF。其中一个对于所有 13 个点差 (DF_B) 都是固定的,但是对于 spreadi 我需要 bondi 并且代码中的第二行给了我以下错误:
"正在加载所需的包:tcltk
sqliteExecStatement(con, statement, bind.data) 中的错误:
RS-DBI 驱动程序:(语句错误:没有这样的表:bond)”
for(i in 1:13)
{
assign(paste("bond", i, sep = ""), function1(DF_A))
assign(paste("spread", i, sep = ""), function2(DF_B, paste("bond", i, sep = "")))
}
这样做的正确方法是什么?
最佳答案
在 function2 中,您将字符串作为参数传递,而不是您的实际数据对象。
将 get(.)
包裹在 paste 函数周围,你就完成了:
function2(DF_B, get( paste("bond", i, sep = "") ) )
话虽如此,我强烈建议不要使用这种方法。
相反,使用
list
bond <- vector("list", 13)
spread <- vector("list", 13)
for(i in 1:13)
{
bond[[i]] <- function1(DF_A)
spread[[i]] <- function2(DF_B, bond[[i]])
}
关于R、正确使用粘贴功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19201603/