将一行dataframe转换为向量

我想从一行数据框中创build一个向量。 但我不想排名和列名。 我尝试了几件事情,但没有运气。

这是我的数据框架:

> df <- data.frame(a=c(1,2,4,2),b=c(2,6,2,1),c=c(2.6,8.2,7.5,3)) > df abc 1 1 2 2.6 2 2 6 8.2 3 4 2 7.5 4 2 1 3.0 

我试过了:

 > newV <- as.vector(df[1,]) > newV abc 1 1 2 2.6 

但我真的很想看到这样的东西:

 > newV <- c( 1,2,2.6) > newV [1] 1.0 2.0 2.6 

任何帮助,非常感谢。

从数据框中提取单个行时,将获得一行数据框。 将其转换为数字vector:

 as.numeric(df[1,]) 

正如@Roland所build议的, unlist(df[1,])将把一行dataframe转换为一个数字向量而不会丢失名称。 因此, unname(unlist(df[1,]))是另一个更简单明了的方法来得到相同的结果。

我build议unlist ,它保持名称。

 unlist(df[1,]) abc 1.0 2.0 2.6 is.vector(unlist(df[1,])) [1] TRUE 

如果你不想要一个命名向量:

 unname(unlist(df[1,])) [1] 1.0 2.0 2.6 

如果你不想改变为数字,你可以试试这个。

 > as.vector(t(df)[,1]) [1] 1.0 2.0 2.6 

数据框的列已经是vector,你只需要把它们拉出来。 请注意,您将逗号之后的列放在您之前,而不是之前:

 > newV <- df[,1] > newV [1] 1 2 4 2 

如果你真的想要一排,然后做本说的话,请在将来用正确的词。

unlistunname没有工作我,它不停地搞砸了。 as.numeric(t(df[1,]))为我做了诡计。