2016-11-13 55 views
0

函数read.table上,as.vector的输出产生MX 1矩阵,而一个长度为m矢量:R:给定read.table的输出时,为什么不给as.vector一个向量?

# data.txt contains one integer per line and nothing else 
dataframe = read.table("data.txt", encoding='UTF-8', header=F) 
v = as.vector(dataframe) 
is.vector(v) 
[1] FALSE 
length(v) 
[1] 1 
dim(v) 
[1] 19783  1 
+0

你不能胁迫整个数据帧来完成要么。你只需要把它叫做'dataframe $ V1'和列'V1'(假设是V1,因为你有'header = FALSE')被提取为一个向量。除此之外,由于所有数据框都是列表,因此您可以将其取消列出。试试'is.vector(unlist(dataframe))' – Sotos

回答

1

为了summerise上述的数据类型:

  • 数据帧:以表格的形式的对象每列可以是不同的类型。数据框实际上是一个列表。
  • Matrix:所有值必须具有相同类型的表格对象。
  • 矢量:一维物体;所有值必须具有相同的类型。

因此,它不(通常)从数据帧转换为矢量是有意义的。

在你的榜样,您可以

unlist(dataframe) 

或转换为基质,然后用​​as.vector

as.vector(data.matrix(dataframe)) 
2

考虑readLines代替read.table直接进口的一列到一个载体:

data <- readLines(con="data.txt", n=-1L, encoding='UTF-8', warn=FALSE) 

is.vector(data) 
#[1] TRUE 
相关问题