【问题标题】:Get only the numeric values in a console output仅获取控制台输出中的数值
【发布时间】:2012-07-25 10:26:21
【问题描述】:

我正在使用分形包并使用 DFA 函数,它在控制台中为我提供了非常完整的输出:

 DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512)

控制台输出:

Detrended fluctuation analysis for log(price_1m[1:1024])
--------------------------------------------------------
H estimate             : 0.452347 
Domain                 : Time 
Statistic              : RMSE 
Length of series       : 1024 
Block detrending model : x ~ 1 + t + I(t^2) 
Block overlap fraction : 0 
Scale ratio            : 2 

Scale 6.00000000 1.2000e+01 2.4000e+01 4.8000e+01 96.0000000 1.920e+02 3.8400e+02
RMSE  0.00029362 4.2002e-04 5.2302e-04 8.5258e-04  0.0011629 1.403e-03 1.7068e-03
Message d'avis :
In if (cls == "signalSeries") { :
  la condition a une longueur > 1 et seul le premier élément est utilisé

事实是我只想要并且需要赫斯特指数估计。所以我想摆脱所有的休息。 所以我试图获取 DFA 函数的属性(DFA 函数给出一个 fractalBlock 对象),这是我在控制台中得到的:

Call:
lm(formula = y ~ 1 + x, data = data.frame(x = xx, y = yy, w = ww), 
    weights = w)

Coefficients:
(Intercept)            x  
    -8.9269       0.4523  

Message d'avis :
In if (cls == "signalSeries") { :
  la condition a une longueur > 1 et seul le premier élément est utilisé

好的,我有一个 lm 对象,我可以从中提取斜率参数估计:

attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[2]

这是在控制台中打印的内容:

       x 
0.452347 
Message d'avis :
In if (cls == "signalSeries") { :
  la condition a une longueur > 1 et seul le premier élément est utilisé

重点是:我只想得到 0.452347 的数值。我尝试使用 as.numeric() 函数转换我的数据,但它不起作用。

感谢您的帮助。

【问题讨论】:

  • 别忘了accept你找到的最佳答案。

标签: r physics time-series finance fractals


【解决方案1】:

这会给你一个未命名的 Double 结果:

attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[[2]]

但可能仍会包含警告。如果你先赋值给一个变量然后打印呢?

x <- attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[[2]]
x

如果您仍然收到此警告,您或许可以使用 try 将其隐藏:

try( x <- attr(DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512),which="logfit")$coef[[2]], silent = TRUE)
x

【讨论】:

    【解决方案2】:

    你只需要这样做:

    H_values <- DFA(log(price_1m[1:1024]),detrend="poly2",overlap=0,scale.max=512)
    H_values["H"]
    

    它适用于虚假数据。如果警告仍然存在:

    options(warn=-1)
    

    【讨论】:

    • 这对我有用,无需抑制警告。如果你真的想要只是这个数字,也可以是as.numeric(H_values["H"])
    猜你喜欢
    • 1970-01-01
    • 2011-10-20
    • 2015-10-08
    • 2020-08-24
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多