无法将变量通过管道传递到级别
Cannot pipe variable to levels
我正在处理一个大型数据框,而不是将操作写入内存,我一直在尝试尽可能多地使用管道。在尝试检查中间步骤中的因子水平时,我 运行 使用 levels
函数遇到了一个问题,想知道是否有人知道问题出在哪里。
一个例子:
library(dplyr)
Data <- data.frame(x = rep(LETTERS[1:5],3),
y = sample(1:10,length(x), replace=T))
通常的工作方式:
levels(Data$x)
[1] "A" "B" "C" "D" "E"
如果我使用 sapply
:
Data %>% select(x) %>% sapply(levels)
x
[1,] "A"
[2,] "B"
[3,] "C"
[4,] "D"
[5,] "E"
但是管道不起作用并且 returns NULL
:
Data %>% select(x) %>% levels()
NULL
为什么 Data %>% select(x) %>% levels()
return NULL
?
有没有办法对管道数据使用级别?
select
给出了一个数据框,但是 levels
期望一个向量作为参数,这就是为什么它们不能一起工作;将 levels
与 pipe
一起使用:
您可以使用 .$x
在级别方法中提取列:
Data %>% select(x) %>% {levels(.$x)}
# [1] "A" "B" "C" "D" "E"
或者更好的方法是使用 pull
而不是 select
,pull
将列作为 vector/factor:
Data %>% pull(x) %>% levels()
# [1] "A" "B" "C" "D" "E"
我正在处理一个大型数据框,而不是将操作写入内存,我一直在尝试尽可能多地使用管道。在尝试检查中间步骤中的因子水平时,我 运行 使用 levels
函数遇到了一个问题,想知道是否有人知道问题出在哪里。
一个例子:
library(dplyr)
Data <- data.frame(x = rep(LETTERS[1:5],3),
y = sample(1:10,length(x), replace=T))
通常的工作方式:
levels(Data$x)
[1] "A" "B" "C" "D" "E"
如果我使用 sapply
:
Data %>% select(x) %>% sapply(levels)
x
[1,] "A"
[2,] "B"
[3,] "C"
[4,] "D"
[5,] "E"
但是管道不起作用并且 returns NULL
:
Data %>% select(x) %>% levels()
NULL
为什么 Data %>% select(x) %>% levels()
return NULL
?
有没有办法对管道数据使用级别?
select
给出了一个数据框,但是 levels
期望一个向量作为参数,这就是为什么它们不能一起工作;将 levels
与 pipe
一起使用:
您可以使用 .$x
在级别方法中提取列:
Data %>% select(x) %>% {levels(.$x)}
# [1] "A" "B" "C" "D" "E"
或者更好的方法是使用 pull
而不是 select
,pull
将列作为 vector/factor:
Data %>% pull(x) %>% levels()
# [1] "A" "B" "C" "D" "E"