R:在读取数据帧时识别列数

标签 r dataframe read.table

当在 R 中输入以下命令时,将创建一个 11 行和 5 列(变量)的数据框。我的问题是 R 如何知道这个数据集中有 5 列?是什么阻止 R 创建 1 行 55 列数据框?

谢谢!

d <- read.table(header=FALSE, fill=TRUE, text="
  1   2010-10-04 52495  2010-10-04 11.6  
  2   2010-10-01 53000  2010-10-01 15.3
  3   2010-09-30 52916  2010-09-30 14.3
  4   2010-09-29 52785  2010-09-29 11.3
  5   2010-09-28 53348  2010-09-28 18.2
  6   2010-09-27 52885  2010-09-24 11.7
  7   2010-09-24 52174  2010-09-23 15.0
  8   2010-09-23 51461  2010-09-22 18.6
  9   2010-09-22 51286  2010-09-20 17.9
  10  2010-09-21 50968  
  11  2010-09-20 49250  ")

最佳答案

函数read.table有几个参数,大部分都有默认值,所以你不需要指定它们。特别是参数 sep,默认情况下为 ""。这个参数是一个神奇的识别列数的参数。如果您将代码更改为:

data.txt="
  1   2010-10-04 52495  2010-10-04 11.6  
  2   2010-10-01 53000  2010-10-01 15.3
  3   2010-09-30 52916  2010-09-30 14.3
  4   2010-09-29 52785  2010-09-29 11.3
  5   2010-09-28 53348  2010-09-28 18.2
  6   2010-09-27 52885  2010-09-24 11.7
  7   2010-09-24 52174  2010-09-23 15.0
  8   2010-09-23 51461  2010-09-22 18.6
  9   2010-09-22 51286  2010-09-20 17.9
  10  2010-09-21 50968  
  11  2010-09-20 49250  "

# reading the same data with different sep values
d0 <- read.table(header=FALSE, fill=TRUE, text=data.txt)
d1 <- read.table(header=FALSE, fill=TRUE, text=data.txt, sep="")
d2 <- read.table(header=FALSE, fill=TRUE, text=data.txt, sep=",")
d3 <- read.table(header=FALSE, fill=TRUE, text=data.txt, sep=";")
d4 <- read.table(header=FALSE, fill=TRUE, text=data.txt, sep="-")
d5 <- read.table(header=FALSE, fill=TRUE, text=data.txt, sep="0")
d6 <- read.table(header=FALSE, fill=TRUE, text=data.txt, sep=".")

# aggregatting all data frames
d = list(d0=d0, d1=d1, d2=d2, d3=d3, d4=d4, d5=d5, d6=d6)
dims.d = sapply(d, dim) # get the dimension of all dataframes
rownames(dims.d) = c("nrow", "ncol")
print(dims.d)

     d0 d1 d2 d3 d4 d5 d6
nrow 11 11 11 11 11 11 11
ncol  5  5  1  1  5 12  2

现在您看到数据的读取方式有所不同。所有具有 5 列的数据框都完全不同,但前两个(您可以检查)。为什么总是有 11 行?因为行尾用于指示新行的开始。在没有我们明确干预的情况下,始终查看此默认参数以了解发生了什么是个好主意。

关于R:在读取数据帧时识别列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17382426/

相关文章:

r - 进行热图,水平/等高线图和六边形合并的方法

r - 为什么在尝试将 CRS 分配给 R 中的栅格时出现错误?

r - 如何从包含n * NA的数据框中删除行

python - 如何在 dtype=str 的数据帧上使用 dropna?

r - Append\Union 两个或几个表为一个

r - 如何在 R 中创建如下所示的矩阵

r - 从公司的每日返回中找出每周返回

python - 如何删除 NaN 并挤入 DataFrame - pandas

r - read.csv读取特定行

在 R 中读取文件