在数据帧中,[可以使用单个字符执行索引。例如mtcars["mpg"]。
另一方面,在矩阵上尝试相同的结果,NA例如
m = cbind(A = 1:5, B = 1:5)
m["A"]
# NA
Run Code Online (Sandbox Code Playgroud)
...暗示这在某种程度上是一种无效的矩阵子集方法。
这是正常的 R 行为吗?如果有,记录在哪里?
cbind()默认情况下创建一个矩阵。mtcars是一个数据框。
class(cbind(A = 1:5, B = 1:5))
# [1] "matrix" "array"
class(mtcars)
# [1] "data.frame"
Run Code Online (Sandbox Code Playgroud)
由于数据框是作为lists 列构建的,dataframe["column_name"]因此使用 中的一个参数[默认将数据框视为list,允许您选择列,大部分与 相同dataframe[, "column_name"]。
Amatrix没有这样的list基础,因此如果您使用[一个参数,它不会假设您需要列。用于matrix[, "column_name"]从矩阵中选择列。
cbind是从头开始创建数据框的糟糕方法。您可以指定cbind.data.frame(A = 1:5, B = 1:5),但使用起来更简单、更清晰data.frame(A = 1:5, B = 1:5)。但是,如果您要向现有数据框中添加多列,那么就cbind(my_data_frame, A = 1:5, B = 1:5)可以了,只要参数之一已经是数据框,就会生成一个数据框。
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |