R数据框
示例
将数据帧子集化为较小的数据帧可以与将列表子集化相同。
> df3 <- data.frame(x = 1:3, y = c("a", "b", "c"), stringsAsFactors = FALSE) > df3 ## x y ## 1 1 a ## 2 2 b ## 3 3 c > df3[1] # Subset a variable by number ## x ## 1 1 ## 2 2 ## 3 3 > df3["x"] # Subset a variable by name ## x ## 1 1 ## 2 2 ## 3 3 > is.data.frame(df3[1]) ## TRUE > is.list(df3[1]) ## TRUE
可以使用双括号[[]]或美元符号运算符$将数据帧子集划分为列向量。
> df3[[2]] # Subset a variable by number using [[ ]] ## [1] "a" "b" "c" > df3[["y"]] # Subset a variable by name using [[ ]] ## [1] "a" "b" "c" > df3$x # Subset a variable by name using $ ## [1] 1 2 3 > typeof(df3$x) ## "integer" > is.vector(df3$x) ## TRUE
可以使用i和j项将数据子集为二维矩阵。
> df3[1, 2] # Subset row and column by number ## [1] "a" > df3[1, "y"] # Subset row by number and column by name ## [1] "a" > df3[2, ] # Subset entire row by number ## x y ## 2 2 b > df3[ , 1] # Subset all first variables ## [1] 1 2 3 > df3[ , 1, drop = FALSE] ## x ## 1 1 ## 2 2 ## 3 3
注意:j单独使用(列)子集可以简化为变量自己的类型,但是i单独使用子集可以返回adata.frame,因为不同的变量可能具有不同的类型和类。设置drop参数以FALSE保留数据帧。
> is.vector(df3[, 2]) ## TRUE > is.data.frame(df3[2, ]) ## TRUE > is.data.frame(df3[, 2, drop = FALSE]) ## TRUE