R
中的某些函数(例如quantile
)丢失了我想要保留的向量名称。假设我建立了以下管道:
> dist <- c(0, 1, 2, 3)
> qnts <- c(lower = 0.25, upper = 0.75)
> qnts %>% quantile(dist, .)
# 25%. 75%
# 0.75 2.25
> qnts %>% quantile(dist, ., names = FALSE)
# [1] 0.75 2.25
在这两种情况下,分位数都会丢失qnts
向量中的名称。
毫不奇怪,管道内的分配不起作用:
> qnts %>% quantile(dist, .) %>% names(.) <- c("upper", "lower")
# Error in qnts %>% quantile(dist, ., names = FALSE) %>% naes(.) <- c("upper", :
# could not find function "%>%<-"
我也不能使用assign
-因为names(.)
不是变量-或重命名-在这种情况下,我可以使用rename(., c("25%" = "lower", "75%" = "upper"))
,但是在我的用例中,分位数动态变化。
必须有某种方法可以智能地恢复qnts
的名称,但我无法弄清楚。
答案 0 :(得分:4)
使用magrittr
,set_names
会更合适(对于Alias
是`names<-`
)
library(magrittr)
qnts %>%
quantile(dist, .) %>%
set_names(c("upper", "lower"))
# upper lower
# 0.75 2.25
或者可以将setNames
中的base R
而不是set_names
更改为最后一步
另一种选择是使用names<-
,但不易理解
qnts %>%
quantile(dist, .) %>%
`names<-`(c("upper", "lower"))
答案 1 :(得分:1)
用大括号包裹作业并使用三通管似乎很有效:
qnts %>% quantile(dist, .) %T>% {names(.) <- c("upper", "lower")}