[英]Calling a specific dataframe column for function in a nested for loop using vectors in R
[英]naming dataframe column vectors using `$`
有人可以解釋為什么在下面的示例中, why
”的列名看起來仍然是x
即使它被清楚地命名為“ why
並且可以這樣命名,但對於zz
列卻不能這樣稱呼?
df<-data.frame(x=1:5,y=1:5)
df$z<-"a"
df$zz<-df$x*df$y
df$why<-df[1]*df[2]
df
df["why"]
因為您實際上是將數據幀存儲在其中,而不是向量。
> str(df)
'data.frame': 5 obs. of 4 variables:
$ x : int 1 2 3 4 5
$ y : int 1 2 3 4 5
$ z : chr "a" "a" "a" "a" ...
$ why:'data.frame': 5 obs. of 1 variable:
..$ x: int 1 4 9 16 25
> str(df[1]*df[2])
'data.frame': 5 obs. of 1 variable:
$ x: int 1 4 9 16 25
> str(df[,1] * df[,2])
int [1:5] 1 4 9 16 25
> df$why2 <- df[,1]*df[,2]
> df
x y z x why2
1 1 1 a 1 1
2 2 2 a 4 4
3 3 3 a 9 9
4 4 4 a 16 16
5 5 5 a 25 25
df[1]
返回df[1]
的第一個元素作為子列表。 數據框是列表的一種特殊類型,這就是為什么您可以使用這種類型的索引來捕獲列的原因。 但是,僅使用單括號告訴它返回包含感興趣元素(而不只是感興趣元素)的子列表。
可能是您的問題正在建立索引,請嘗試以下操作:
df$zz<-df$x*df$y # this should replace df$zz<-x*y
df$why<-df[,1]*df[,2] # this repaces df$why<-df[1]*df[2]
df
x y z zz why
1 1 1 a 1 1
2 2 2 a 4 4
3 3 3 a 9 9
4 4 4 a 16 16
5 5 5 a 25 25
df["why"]
why
1 1
2 4
3 9
4 16
5 25
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.