两部分问题。
第1部分,前言:关于我想要完成什么/我想做什么。我想准确理解下面(2)中发生的事情。
提供上下文:我不知道下面产生什么类型的对象(或者确切地说"类型"意味着什么),但是 以下似乎产生了一个对象,当打印出来时,它似乎是一个列向量(即一个有几行且只有一列的矩阵)。
(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)没有(此时,我认为他们不会)?
答案 0 :(得分:1)
如果没有一些示例数据可以使用,这是我最好的猜测。
他们正在打印相同类型的对象,即1列矩阵。行名称的差异出现是因为在循环中添加的对象是不同的。在对象1中,您要添加没有名称的mean(y$Sale_Price)
,因此您在第一行中获取z,来自对象z
的名称,而在其余行中没有行名称。对于对象2,您要添加对象x
。此对象具有名称,因此w之外的其余行具有行名称x。
以下是如何在没有循环的情况下构建类似对象。
matrix(NA,5,1,dimnames = list(rep("a",5)))