0

我开始使用 R 来使用库中的单纯形函数(“boot”)来解决 LP 问题。当我尝试以下代码时,我只将目标向量作为字符串而不是作为向量。

library("boot") 
# This example is taken from Exercise 7.5 of Gill, Murray and Wright (1991).
enj <- c(200, 6000, 3000, -200)
fat <- c(800, 6000, 1000, 400)
vitx <- c(50, 3, 150, 100)
vity <- c(10, 10, 75, 100)
vitz <- c(150, 35, 75, 5)
j<-simplex(a = enj, A1 = fat, b1 = 13800, A2 = rbind(vitx, vity, vitz),
b2 = c(600, 300, 550), maxi = TRUE)
xx<-(j["soln"])
print(xx)

由此得到以下输出

$soln
x1   x2   x3   x4 
0.0  0.0 13.8  0.0 

但是,这不是矢量对象,因此我无法使用x[1]. 你能帮我得到一个向量的结果吗?

4

1 回答 1

2

您的变量xx是一个列表,因此很容易在其中返回特定值。

例如,如果你想要 x1,你可以这样做:

xx[["soln"]]["x1"]或者xx[[1]][1]

但是如果你想转换xx成一个向量,你可以这样做:

xx2 <- unlist(xx)

然后你有一个向量:

> xx2
soln.x1 soln.x2 soln.x3 soln.x4 
    0.0     0.0    13.8     0.0 

> is.vector(xx2)
[1] TRUE

如果您不想保留向量中每个元素的名称,请将 arguse.names放入FALSE

> xx2 <- unlist(xx, use.names = FALSE)
> xx2
[1]  0.0  0.0 13.8  0.0

> is.vector(xx2)
[1] TRUE
于 2017-06-29T11:39:18.613 回答