为什么n中的nrow(数据帧)和长度(数据帧)给出不同的结果?

时间:2016-02-10 02:49:35

标签: r

我有一个有序的数据框,想知道最后一行的编号。

data_ranking <- reduced_data[order(reduced_data$outcome,reduced_data$hospital,na.last=NA),]
nobs <- nrow(data_ranking)

给了我不同的结果

data_ranking <- reduced_data[order(reduced_data$outcome,reduced_data$hospital,na.last=NA),]
nobs <- length(data_ranking)

我想明白为什么会这样。似乎nrow给了我正在寻找的答案,但我不明白为什么。

1 个答案:

答案 0 :(得分:5)

数据框基本上是每个元素具有相同长度的列表。

列表的每个元素都是一列,因此length为您提供列表的长度,通常是列数。

nrow会为您提供行数ncol(或length)列数。

一旦我们在data.frame中有非标准结构(例如矩阵)和

,列和列表长度的明显等价就会变得混乱
 x <- data.frame(y=1:5, z = matrix(1:10,ncol=2))
 ncol(x) 
 # 3
 length(x) 
 # 3


 x1 <- data.frame(y=1:5, z = I(matrix(1:10,ncol=2)))

 ncol(x1) 
 # 2
 length(x) 
 # 2