2017-01-30 6 views
2

ich diese Daten bin mit: https://www.dropbox.com/s/m02z4ykirfc1838/data.txt?dl=0Fehler bei 1: N: NA/NaN Argument

Ich versuche, das folgende Modell auszuführen:

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)]) 
} 
} 

Allerdings bekomme ich diesen Fehler Zeug:

Fehler bei 1: N: NA/NaN Argument

ich wirklich eine Hand auf ihn brauchen.

+1

Was Funktion ist lp. Es ist nie definiert. Laden Sie einige Bibliotheken? – Mandar

Antwort

2

Ich weiß nicht, die LP-Funktion, aber ich sah, dass die Art, wie Sie N, s, m waren falsch definiert. Sie hatten den Wert in [] rathere als dim (Daten) [1] oder dim (Daten) [2]. Jetzt ist der Fehler in der Schleife verschwunden. Wenn Sie definiert N < - dim (Daten) [19] N als NA definiert wurde, so dass die Schleife für 1 erstellt wurde: NA die NAN ist

testen Werden


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)]) 
    } 
} 
+1

Es hat funktioniert! Danke vielmals! –

+0

Greifen Sie meine Antwort auf? Thanx – Mandar

+1

Ich tat es, aber, wie ich weniger als 15 im Ruf habe, wird es dort nicht angezeigt = ( –

Verwandte Themen