一个数据帧的R分位数给我;未定义的列已选定";

一个数据帧的R分位数给我;未定义的列已选定";,r,dataframe,R,Dataframe,我创建了一个数据帧,如下所示: > df <- data.frame(1:20) > str(df) 'data.frame': 20 obs. of 1 variable: $ X1.20: int 1 2 3 4 5 6 7 8 9 10 ... 另一方面,如果我的数据是向量,那么quantile()工作正常。有什么好处 > v <- 1:20 > str(v) int [1:20] 1 2 3 4 5 6 7 8 9 10 ... >

我创建了一个数据帧,如下所示:

> df <- data.frame(1:20)
> str(df)
'data.frame':   20 obs. of  1 variable:
 $ X1.20: int  1 2 3 4 5 6 7 8 9 10 ...
另一方面,如果我的数据是向量,那么quantile()工作正常。有什么好处

> v <- 1:20
> str(v)
 int [1:20] 1 2 3 4 5 6 7 8 9 10 ...
> quantile(v, 0.25)
 25% 
5.75 
>v str(v)
国际[1:20]12345678910。。。
>分位数(v,0.25)
25% 
5.75
在函数
分位数(x,…)
假设x是一个数值向量,则传递一个数据帧

如果在分位数函数中使用数据帧,那么应该传递如下内容

quantile(df$X1.20, 0.25)
其中
X1.20
是列名


事实上,
df[1]
也是一个数据帧,而不是向量。

好的,明白了。分位数(df[,1],0.25)产生正确的结果。但是我不明白df[1]这个表达式产生了什么?当它打印出来时看起来像一个向量。为什么quantile()接受向量而不是data.frame?其他统计函数,如mean()和var()可以接受一个数据帧。@stackoverflowuser2010
var
将接受一个数据帧,并且仅当所有变量都是数字时才返回合理的结果
mean
将返回
NA
,并在数据帧上显示警告。
quantile(df$X1.20, 0.25)