我正在使用这些数据: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参数
中的错误我真的需要一只手。
答案 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)])
}
}