R:为什么当给定read.table的输出时as.vector给出一个向量?

时间:2016-11-13 14:21:07

标签: r vector

在read.table的输出上,as.vector生成一个m x 1矩阵,而不是长度为m的向量:

# 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

2 个答案:

答案 0 :(得分:2)

夏季化以上数据类型:

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

因此,它(通常)不会从​​数据帧转换为向量。

在您的示例中,您可以

unlist(dataframe)

或转换为矩阵,然后使用as.vector

as.vector(data.matrix(dataframe))

答案 1 :(得分:2)

考虑readLines而不是read.table,它将一列直接导入向量:

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

is.vector(data)
#[1] TRUE