簡體   English   中英

如何從 R 中的時間序列列表中訪問數據名稱?

[英]How to access data name from a list of time-series in R?

我是編程新手,遇到了一個我不知道如何解決的問題。

嘗試按時間序列運行一些測試,例如 adf.test() 和 kpss.test()。 上面的例子是使用 adf.test():

library(tseries)

air = ts(AirPassengers)
co2 = ts(co2)
lista = list(air,co2)
table1 = data.frame()

for (i in lista){ table1 = rbind(table1, adf.test(i))}

結果,它打印:

              statistic parameter alternative   p.value                       method data.name
Dickey-Fuller -7.318571         5  stationary 0.0100000 Augmented Dickey-Fuller Test         i
2             -2.829928         7  stationary 0.2269262 Augmented Dickey-Fuller Test         i

請注意,“data.name”打印的是“i”,而不是“air, co2”。 其他都是正確的。

如何在表格中打印出“空氣”和“二氧化碳”?

它不保留數據的名稱,因為您遍歷列表,因此您的名稱成為迭代變量的名稱,在本例中為i 您可以通過重新分配列表中的名稱輕松解決此問題:

table1$data.name <- names(lista)

FWIW,您不需要啟動 table1 然后在這里運行 for 循環。 您可以使用像 do.call(rbind, lapply(lista, adf.test)) @ulfelder 這樣的單行獲得相同的結果(具有相同的問題)

謝謝! 為此,我更改了代碼,因為它得到了以下結果:

#     statistic parameter alternative  p.value   method                         data.name
#[1,] -7.318571 5         "stationary" 0.01      "Augmented Dickey-Fuller Test" "X[[i]]" 
#[2,] -2.829928 7         "stationary" 0.2269262 "Augmented Dickey-Fuller Test" "X[[i]]"

它沒有顯示任何時間序列的名稱。 我剛剛更改了代碼,因此名稱出現:

library(tseries)

lista = list (air = ts(AirPassengers), co2 = ts(co2))

do.call(rbind, lapply(lista, adf.test))

結果如下:

#        statistic parameter alternative  p.value   method                         data.name
#    air -7.318571 5         "stationary" 0.01      "Augmented Dickey-Fuller Test" "X[[i]]" 
#    co2 -2.829928 7         "stationary" 0.2269262 "Augmented Dickey-Fuller Test" "X[[i]]"

請注意,data.name 仍然得到“X[[i]]”,但在開始時您可以找到“air”和“co2”,它們符合我的要求。

感謝@ulfelder 的幫助!

暫無
暫無

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

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