簡體   English   中英

函數返回R中的修改矩陣

[英]Function to return modified matrix in R

以下代碼將向量XTS1$XTSSum2添加到xts對象XTS1

library(xts)
XTS1 <- structure(c(12, 7, 7, 22, 24, 30, 26, 23, 27, 30), .indexCLASS = c("POSIXct", "POSIXt"), .indexTZ = "", tclass = c("POSIXct", "POSIXt"), tzone = "", class = c("xts", "zoo"), .CLASS = structure("double", class = "CLASS"), formattable = structure(list(formatter = "formatC", format = structure(list(format = "f", digits = 2), .Names = c("format", "digits")), preproc = "percent_preproc", postproc = "percent_postproc"), .Names = c("formatter", "format", "preproc", "postproc")), index = structure(c(1413981900, 1413982800, 1413983700, 1413984600, 1413985500, 1413986400, 1413987300, 1413988200, 1413989100, 1413990000), tzone = "", tclass = c("POSIXct", "POSIXt")), .Dim = c(10L, 1L))
colnames(XTS1) <- "XTS1"
XTS1$XTSSum2 <- XTS1$XTS1 + lag(XTS1$XTS1,1)

以下功能執行相同的操作。

addfunction <- function(x){
  x$XTSSum2 <- x$XTS1 + lag(x$XTS1,1)
}
addfunction(XTS1)

但是不存儲向量XTS1$XTSSum2 如何獲得addfunction來存儲向量,以便在運行addfunction(XTS1)XTS1將如下所示:

                     XTS1 XTSSum2
2014-10-22 08:45:00   12      NA
2014-10-22 09:00:00    7      19
2014-10-22 09:15:00    7      14
2014-10-22 09:30:00   22      29
2014-10-22 09:45:00   24      46
2014-10-22 10:00:00   30      54
2014-10-22 10:15:00   26      56
2014-10-22 10:30:00   23      49
2014-10-22 10:45:00   27      50
2014-10-22 11:00:00   30      57

可重現的示例使用xts對象,假設相同的解決方案將應用於xts對象,矩陣和數據幀。

賦值發生在函數的環境中,而不是全局的。 您需要在函數中返回結果,並使用函數調用進行分配。 嘗試這個:

addfunction <- function(x){
  x$XTSSum2 <- x$XTS1 + lag(x$XTS1,1)
  x
}
XTS1 <- addfunction(XTS1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM