gpt4 book ai didi

r - 如何从R中的命名数值向量中检索简单数值?

转载 作者:行者123 更新时间:2023-12-04 16:35:53 25 4
gpt4 key购买 nike

我正在使用R计算一些基本的统计结果。我正在使用Quantile()函数,如下所述计算数据帧列上的分位数。

> quantile(foobars[,1])
0% 25% 50% 75% 100%
189000 194975 219500 239950 1000000

我希望能够单独访问计算的分位数。但是,我似乎找不到解决方法。当我检查返回结果的类时,它是一维数字。

我尝试了这个:
> q <- quantile(foobars[,1])
> q[3]
50%
219500

这似乎返回一个元组(分位数+数字)。我只对数字感兴趣(在这种情况下为219500。

如何仅将数字访问一个简单的(数字)变量?

最佳答案

您正在将数字值的打印的表示与实际值混淆。就R而言,q包含一个命名的数值向量:

> dat <- rnorm(100)
> q <- quantile(dat)
> q
0% 25% 50% 75% 100%
-2.2853903 -0.5327520 -0.1177865 0.5182007 2.4825565
> str(q)
Named num [1:5] -2.285 -0.533 -0.118 0.518 2.483
- attr(*, "names")= chr [1:5] "0%" "25%" "50%" "75%" ...

所有“命名”位的意思是该向量具有附加的属性 "names",其中包含(在这种情况下)分位数标签。 R将它们打印为命名矢量,因为它们被认为有助于打印输出(如果存在)。但是,它们绝不会改变这是一个数字矢量的事实。您可以在计算中使用它们,就好像它们没有 "names"属性一样:
> q[3] + 10
50%
9.882214

如果名称使您感到困扰,则存在 unname()函数可将其删除:
> q2 <- unname(q)
> q2
[1] -2.2853903 -0.5327520 -0.1177865 0.5182007 2.4825565

为了完整起见,我可能应该补充一点,您可以使用 "names"函数提取 names(),该函数还具有一个赋值版本( 'names<-'())。因此,从向量中删除名称的另一种方法是将 NULL分配给名称:
> q3 <- q
> names(q3)
[1] "0%" "25%" "50%" "75%" "100%"
> names(q3) <- NULL
> names(q3)
NULL

关于r - 如何从R中的命名数值向量中检索简单数值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com