2013-10-12 78 views
0

我有一个巨大的数据帧,我只从中选择几行。然后根据条件删除一些列。让我们说,我选择行4460的波纹管所示:将一行数据帧转换为R中的简单向量

 V1870 V107 V1315 V1867 V1544 V1207 V1252 V1765 V342 V429 V1826 V865 V1374 
4460  0 0  3  0  5  0  2  0 4 0  0 0  0 

的问题是,我需要此行转换为一个简单的载体(意思是我要摆脱所有的行/列名的),这样我可以将它传递给另一个函数。我希望能有以下结果:

[1] 0 0 3 0 5 0 2 0 4 0 0 0 0 

我试图as.listas.vector,但他们没有放弃我所期待的结果。任何想法?

回答

1

实施例从mtcars数据

mydata<-mtcars 
k<-mydata[1,] 
      mpg cyl disp hp drat wt qsec vs am gear carb 
Mazda RX4 21 6 160 110 3.9 2.62 16.46 0 1 4 4 
names(k)<-NULL 

unlist(c(k)) 
[1] 21.00 6.00 160.00 110.00 3.90 2.62 16.46 0.00 1.00 4.00 4.00 

更新为每@Ananda:unlist(mydata[1, ], use.names = FALSE)

+0

完美的工作!谢谢 – John

+0

没问题。很高兴它工作 – Metrics

+0

我真的不明白。为什么不只是'unlist(mydata [1,],use.names = FALSE)'? – A5C1D2H2I1M1N2O1R2T1

0

尝试使用行索引。

e.q.

list <- yourdataframe[4460, ] 
+0

我试过,但我仍然得到与上述相同的结果。 – John

1

我认为它已经载体中,仅在每个元素名称(来自data.frame继承) 。

#random df 
    DF = data.frame(col1 = sample(1:10, 10), col2 = sample(1:10,10), col3 = sample(1:10, 10)) 

    DF[5,] 
     col1 col2 col3 
    5 3 7 5 

    mode(DF[5,]) 
    [1] "list" 

    mode(unlist(DF[5,])) 
    [1] "numeric" 

    names(DF[5,]) 
    [1] "col1" "col2" "col3" 

    sum(DF[5,]) # computations are naturally done 
    [1] 15 

为了摆脱的名字,nontheless,你可以:

unname(unlist(DF[5,])) 
    [1] 3 7 5 
+1

'unlist'有一个'use.names'参数,当它设置为'FALSE'时,它比'unlist'快得多。 – A5C1D2H2I1M1N2O1R2T1