初学者使用 rbind 函数创建向量

begginner create vectors using rbind function

两部分问题。

第 1 部分,前言:关于我想要完成的事情/我想要做的事情。我想确切地了解下面的 (2) 发生了什么。

为了提供上下文:我不知道以下生成的对象类型(或者 "type" 究竟意味着什么),但是 以下内容似乎产生了一个对象,该对象在打印时似乎是一个列向量(即具有多行且只有一列的矩阵)。

(1)

> z = 0
> for (x in unique(sort(df1$Mkt_Area))){
+   y = df1[ which( df1$Mkt_Area == x) , ]
+   z = rbind(z, mean(y$Sale_Price))
+ }
> z
       [,1]
z      0.00
  142500.00
  246333.33
  204300.00

我很困惑为什么以下内容似乎没有类似的行为

(2)

> w = 0
> for (x in unique(sort(df1$Mkt_Area))){
+   w = rbind(w, x)
+ }
> w
  [,1]
w    0
x 1101
x 1102
x 1201

特别是,为什么包含字符 x 的列打印在 (2) 而不是 (1) 中?这种差异的意义/重要性是什么?

第 2 部分。如果我想通过与上述类似的循环生成列向量(我不是在问为此目的使用循环是否可取或如何通过替代方法生成列向量),那么如何 如果 (1) 和 (2) 不这样做(在这一点上,我假设他们不这样做),我会这样做吗?

在没有一些示例数据的情况下,这是我最好的猜测。 他们正在打印相同类型的对象,一个 1 列矩阵。行名称的差异出现是因为在循环中添加的对象不同。在对象 1 中,您要添加没有名称的 mean(y$Sale_Price),因此您在第一行中得到 z,名称来自对象 z,其余行中没有行名称。对于对象 2,您正在添加对象 x。该对象有一个名称,因此 w 之后的其余行的行名称为 x。

下面是如何在没有循环的情况下构建类似的对象。

matrix(NA,5,1,dimnames = list(rep("a",5)))