我想从列表中提取所有teststat
。手动,我可以达到预期的结果。这是代码:
library(urca)
set.seed(1234)
df_example <- data.frame(a = rnorm(75), b = rnorm(75), c = rnorm(75), d = rnorm(75))
df_UR_pp <- lapply(
df_example,
function(x){
ur.pp(x, type = "Z-tau", model = "constant", lags = "short")
}
)
# Problem is here
all_results <- lapply(df_UR_pp, `[`, 'teststat')
#> Error in FUN(X[[i]], ...): object of type 'S4' is not subsettable
# Expected result
table_all_results <- data.frame("Variable" = c("a", "b" , "c", "d"),
"Z-tau statistic" = c(df_UR_pp$a@teststat, df_UR_pp$b@teststat, df_UR_pp$c@teststat, df_UR_pp$d@teststat))
table_all_results
#> Variable Z.tau.statistic
#> 1 a -7.650956
#> 2 b -7.396869
#> 3 c -7.402462
#> 4 d -8.256534
答案 0 :(得分:1)
您可以只使用使用@
的匿名函数:
lapply(df_UR_pp, function(x) x@teststat)
$a
[1] -7.650956
$b
[1] -7.396869
$c
[1] -7.402462
$d
[1] -8.256534
或者,您可以在slot()
通话中致电lapply()
:
lapply(df_UR_pp, slot, 'teststat')
$a
[1] -7.650956
$b
[1] -7.396869
$c
[1] -7.402462
$d
[1] -8.256534
(建议使用@Roland)