1:N:NA / NaN参数错误

时间:2017-01-30 21:35:11

标签: r

我正在使用这些数据:https://www.dropbox.com/s/m02z4ykirfc1838/data.txt?dl=0

我正在尝试运行以下模型:

inputs<- data.frame(data[,c(1,2,3,4,5)]) # seleciona coluna 2 do objeto data
outputs <- data.frame(data[,c(6,7)]) # seleciona colunas 3, 4 e 5 do objeto data
N<- dim(data)[19] # número de DMUs
s <- dim(inputs)[5] # número de inputs
m <- dim(outputs)[2] # número de outputs
f.rhs <- c(rep(0,1,N),1) # RHS
f.dir <- c(rep("<=",1,N),"=") # direção das restrições
aux <- cbind(-1*inputs,outputs) # matriz com os coeficientes tecnológicos em (6)
for (i in 1:N) {
f.obj <- c(0*rep(1,s),as.numeric(outputs[i,])) # coeficientes da função objetivo
f.con <- rbind(aux ,c(as.numeric(inputs[i,]), + rep(0,1,m))) # adiciona a restrição b
T
z=1
results <- lp("max",as.numeric(f.obj),f.con,f.dir,f.rhs,scale=1,compute.sens=TRUE) # resolve PPL
multipliers <- results$solution # multiplicadores
efficiency <- results$objval # indices de eficiência
duals <- results$duals # 
if (i==1) {
 weights <- multipliers
 effcrs <- efficiency
 lambdas <- duals [seq(1,N)]
} else {
 weights <- rbind(weights,multipliers)
 effcrs <- rbind(effcrs , efficiency)
 lambdas <- rbind(lambdas,duals[seq(1,N)])
}
} 

但是,我收到了这个错误:

1:N:NA / NaN参数

中的错误

我真的需要一只手。

1 个答案:

答案 0 :(得分:3)

我不知道lp函数,但我看到你定义N,s,m的方式是错误的。您在[] rathere中的值大于dim(数据)[1]或dim(data)[2]。现在循环中的错误消失了。当你定义      N < - dim(数据)[19] N被定义为NA,因此为1:NA创建了循环,即NAN

试试这个

data <- read.table("~/Documents/data.txt",header=F)
inputs<- data.frame(data[,c(1,2,3,4,5)]) # seleciona coluna 2 do objeto data
outputs <- data.frame(data[,c(6,7)]) # seleciona colunas 3, 4 e 5 do objeto data
N<- dim(data)[1] # número de DMUs
s <- dim(inputs)[2] # número de inputs
m <- dim(outputs)[2] # número de outputs
f.rhs <- c(rep(0,1,N),1) # RHS
f.dir <- c(rep("<=",1,N),"=") # direção das restrições
aux <- cbind(-1*inputs,outputs) # matriz com os coeficientes tecnológicos em (6)
for (i in 1:N) {
  f.obj <- c(0*rep(1,s),as.numeric(outputs[i,])) # coeficientes da função objetivo
  f.con <- rbind(aux ,c(as.numeric(inputs[i,]), + rep(0,1,m))) # adiciona a restrição b
  T
  z=1
  results <- lp("max",as.numeric(f.obj),f.con,f.dir,f.rhs,scale=1,compute.sens=TRUE) # resolve PPL
  multipliers <- results$solution # multiplicadores
  efficiency <- results$objval # indices de eficiência
  duals <- results$duals # 
  if (i==1) {
    weights <- multipliers
    effcrs <- efficiency
    lambdas <- duals [seq(1,N)]
  } else {
    weights <- rbind(weights,multipliers)
    effcrs <- rbind(effcrs , efficiency)
    lambdas <- rbind(lambdas,duals[seq(1,N)])
  }
}