R-将输出提取到数据帧中

R-将输出提取到数据帧中,r,output,R,Output,我在R中运行了一个统计分析支持向量机包e1071,我想将部分输出提取到一个向量中。 例如: >library(e1071) >a<-c(0,0,1,1,1) >b<-c(2,4,5,5,5) >c<-c(5,6,7,3,7) >a<-as.factor(a) >model<-svm(a~b+c,probabiity=TRUE,method="C-classification") #build a SVM classificatio

我在R中运行了一个统计分析支持向量机包e1071,我想将部分输出提取到一个向量中。 例如:

>library(e1071)
>a<-c(0,0,1,1,1)
>b<-c(2,4,5,5,5)
>c<-c(5,6,7,3,7)
>a<-as.factor(a)
>model<-svm(a~b+c,probabiity=TRUE,method="C-classification") #build a SVM classification model

>b<-c(4,4,5,6,7)
>c<-c(4,6,7,3,7)
>test<-data.frame(b,c) ## test data
>probability<-predict(model,test,probability=TRUE)
>probability 

1 2 3 4 5 
0 0 0 0 0 
attr(,"probabilities")
    0   1
1 0.5 0.5
2 0.5 0.5
3 0.5 0.5
4 0.5 0.5
5 0.5 0.5
Levels: 0 1
我想提取列1中的所有数据,并将其存储在向量中
我如何才能做到这一点?

使用您提供的数据

df <- structure(list(X0 = c(0.9457661, 0.9394421, 0.9348035, 0.9393719, 
0.9409816, 0.9390066, 0.9391518, 0.9407844), X1 = c(0.05423386, 
0.0605579, 0.06519648, 0.06062806, 0.05901843, 0.06099342, 0.06084821, 
0.05921564)), .Names = c("X0", "X1"), class = "data.frame", row.names = c("3", 
"6", "9", "12", "14", "16", "19", "25"))

vector <- df[,1]

vector
[1] 0.9457661 0.9394421 0.9348035 0.9393719 0.9409816 0.9390066 0.9391518
[8] 0.9407844

当显示完整控制台输出时,您可以看到所需的数据存储在一个“属性”中,该属性具有一个概率名称,您需要使用attr函数来提取它:

> str(probability)
 Factor w/ 2 levels "0","1": 1 1 1 1 1
 - attr(*, "names")= chr [1:5] "1" "2" "3" "4" ...
 - attr(*, "probabilities")= num [1:5, 1:2] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:5] "1" "2" "3" "4" ...
  .. ..$ : chr [1:2] "0" "1"
> attr(probability, "probabilities")
    0   1
1 0.5 0.5
2 0.5 0.5
3 0.5 0.5
4 0.5 0.5
5 0.5 0.5
由于您只想存储第一列,因此可以使用[j]函数,并将j参数设置为数字或字符名,这在本例中是相同的

myvals <- attr(probability, "probabilities")[ , '1']
myvals
  1   2   3   4   5 
0.5 0.5 0.5 0.5 0.5 

您的输出的当前格式是什么?字符串?我如何检查?您需要向我们提供该对象的str结果,尽管您可能没有将其保存到对象中。向我们显示代码。谢谢,但输出实际上很长,有2000多行。我能自动提取数据吗?一种快速的方法是附加[1]在predictmodel的末尾,test,probability=TRUE。如果没有一个更完整的可重复的例子,你的问题就很难说得更多。你可以看一看。