【问题标题】:Removing quotes in function output in R删除 R 函数输出中的引号
【发布时间】:2014-01-01 19:17:39
【问题描述】:

我正在尝试在 R 中编写一个函数,用于简单的时间序列回归(该函数的结果是更复杂函数的输出)。在第一部分中,我定义了变量并为函数创建了一些滞后,根据使用的滞后将其命名为 ar_i。

然而,在第二部分中,我尝试在最初定义的变量上使用 cbind 函数将这些滞后组合到一个矩阵中。如您所见,输出不是预期的矩阵,而是滞后本身的名称。我试图通过使用 noquote() 和 cat() 函数来解决这个问题,但这些似乎不起作用。

你有什么建议吗?提前致谢!!!

Pd:代码和结果如下。

trans      <- dlpib
ar         <- dlpib
linear     <- 1:4

for (i in linear){
  assign(paste("ar_",i,sep = ""), lag(ar,k=-i))
}

linear_dat <- cbind(paste("ar_",linear, collapse=',', sep = ""))

> linear_dat
     [,1]                 
[1,] "ar_1,ar_2,ar_3,ar_4"

【问题讨论】:

  • @josilber 的(更好的)解决方案的替代方法是在您的 cbind 调用中使用 get,这是您当前尝试失败的方法。
  • 嗨,托马斯。谢谢您的答复。我试过 cbind(get(paste("ar_",linear, collapse=',', sep = "")))。它也不起作用。我得到:get(paste("ar_", linear, collapse = ",", sep = "")) 中的错误:找不到对象 'ar_1,ar_2,ar_3,ar_4'

标签: r function quotes


【解决方案1】:

我认为你可以使用 sapply 更有效地解决这个问题:

linear <- 1:4
linear_list <- lapply(linear, function(i) lag(ar, k=-i))
linear_dat <- do.call(cbind, linear_list)
colnames(linear_dat) <- paste0("ar_", linear)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2022-01-22
    • 2015-09-28
    • 1970-01-01
    • 2018-01-24
    • 2021-10-06
    相关资源
    最近更新 更多