IC2関数から番号で抽出

Aug 31 2020

calcSConc関数(パッケージIC2)から1つの数値を抽出しようとしています。必要な番号を2つのステップで個別に抽出できます。

#CODE
library(IC2)
library(dplyr)

DATA_REFORM<-rnorm(1000, 3, .25)
DATA_REFORM1<-rnorm(5000, 6, .50)

dn_0<-calcSConc(DATA_REFORM,DATA_REFORM1)
dn_1<-data.frame(dn_0[[1]])
dn_1<-round(dn_1,6)
dn_1

この関数からの出力は以下の番号です。

         index parameter
SConc 0.000115         2

したがって、私の意図は、この番号0.000115のみを以下のコードでデータフレームに入れることです。

INEQ_TOTAL_INCOME_OUTPUT<-data.frame(
  "Concentration coefficient of taxes with respect to pre-tax"= round(IC2::calcSConc(DATA_REFORM,DATA_REFORM1),6)
  check.names = FALSE
)

それで、誰かがこのコードを修正して結果0.000115を取得する方法を助けてくれますが、データフレームに入れますか?

回答

1 akrun Aug 31 2020 at 02:04

をチェックするstrと、ネストされていますlist

str(dn_0)
#List of 2
# $ ineq:List of 2 # ..$ index    : Named num -0.00054
#  .. ..- attr(*, "names")= chr "SConc"
#  ..$ parameter: Named num 2 # .. ..- attr(*, "names")= chr "param" # $ nas :List of 4
#  ..$ xNA : num 0 # ..$ yNA    : num 0
#  ..$ wNA : NULL # ..$ totalNA: int -4000

したがって、[[またはを使用してこれらのコンポーネントを直接抽出でき$ます。ここではdata.frame、抽出された「ineq」コンポーネントを直接作成できます。

d1 <- transform(data.frame(IC2::calcSConc(DATA_REFORM, 
          DATA_REFORM1)$ineq), index = round(index, 6))

最初の列の名前を変更します

names(d1)[1] <-  "Concentration coefficient of taxes with respect to pre-tax"
d1
#      Concentration coefficient of taxes with respect to pre-tax parameter
#SConc                                                   -0.00054         2
1 RonakShah Aug 31 2020 at 08:09

index出力から部分のみを抽出できます:

data.frame("Concentration coefficient of taxes with respect to pre-tax" = 
           round(IC2::calcSConc(DATA_REFORM,DATA_REFORM1)[[1]]$index,6), 
           check.names = FALSE)

#      Concentration coefficient of taxes with respect to pre-tax
#SConc                                                  -0.000252