首页 > 解决方案 > 从 IC2 函数中提取数字

问题描述

我试图从 calcSConc 函数(包 IC2)中提取一个数字。我可以分两步提取我需要的号码:

#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 但进入数据框?

标签: rdplyr

解决方案


如果我们检查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

[[因此,我们可以使用or直接提取这些组件$。在这里,我们可以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

推荐阅读