试图获取子集但显示错误:( list)对象无法强制键入'double'

时间:2015-09-19 05:58:35

标签: r

我试图找到子集,但它显示的错误为:

enter image description here

我正在使用R中的基准测试包执行数据包络分析     虽然我之前曾看过类似的问题,但它对我没有帮助。

更新:数据库的结构和摘要

enter image description here

我正在为V6和V7执行DEA。

1 个答案:

答案 0 :(得分:2)

我想你需要

Large.Cap$V1[e_crs$eff > 0.85]

使用?dea

中可重复的示例
library(Benchmarking)
x <- matrix(c(100,200,300,500,100,200,600),ncol=1)
y <- matrix(c(75,100,300,400,25,50,400),ncol=1)
Large.Cap <- data.frame(v1= LETTERS[1:7], v2= 1:7)
e_crs <- dea(x, y, RTS='crs', ORIENTATION='in')
e_crs
#[1] 0.7500 0.5000 1.0000 0.8000 0.2500 0.2500 0.6667

e_crs对象是list

str(e_crs)
#List of 12
# $ eff        : num [1:7] 0.75 0.5 1 0.8 0.25 ...
# $ lambda     : num [1:7, 1:7] 0 0 0 0 0 0 0 0 0 0 ...
#  ..- attr(*, "dimnames")=List of 2
#  .. ..$ : NULL
#  .. ..$ : chr [1:7] "L1" "L2" "L3" "L4" ...
# $ objval     : num [1:7] 0.75 0.5 1 0.8 0.25 ...
# $ RTS        : chr "crs"
# $ primal     : NULL
# $ dual       : NULL
# $ ux         : NULL
# $ vy         : NULL
# $ gamma      :function (x)  
# $ ORIENTATION: chr "in"
# $ TRANSPOSE  : logi FALSE
# $ param      : NULL
# - attr(*, "class")= chr "Farrell"

我们提取&#39; eff&#39;来自&#39; e_crs&#39;的list元素到subset&#39; v1&#39;专栏&#39; Large.Cap&#39;数据集。

droplevels(Large.Cap$v1[e_crs$eff > 0.85])
#[1] C
#Levels: C