这个循环正确地创建了 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/

10-12 17:52