从R中导入的数据帧中采样

时间:2018-10-24 17:17:18

标签: r statistics

为什么length(myData)= 11?有11个变量的4548个观测值,所以length(myData)= 4548不应该吗?因此,我无法提取100号样品。

enter image description here

1 个答案:

答案 0 :(得分:1)

data.frame中有11列。回想一下,data.frame基本上是向量的list,它们都具有相同的长度。因此,在length上运行data.frame不会返回行数,而是返回向量的长度(即列数)。请改用nrow。比较以下内容:

x <- data.frame(N = rnorm(10), U = runif(10)) # A 10 by 2 data.frame
print(x)
#            N          U
#1  -0.3268912 0.54028083
#2  -1.2258164 0.92542376
#3   0.3019713 0.94697492
#4   0.2705930 0.63219863
#5  -0.3168112 0.58040885
#6   2.2770266 0.03954027
#7   1.8342293 0.72598938
#8   1.1173648 0.44547958
#9  -0.7042288 0.09008339
#10 -0.6354642 0.85035006

length(x)
# [1] 2

nrow(x) 
# [1] 10

ncol(x)
# [1] 2

dim(x)
#[1] 10  2

编辑:正如@jogo在评论中写的那样,您可以使用以下内容对m个随机行进行采样:

m <- 5
x[sample(nrow(x), m), ]

请注意,这使用x[<subset of rows>, <subset of cols>]表示法。参见help("[")