【发布时间】:2015-06-05 01:04:29
【问题描述】:
我正在尝试使用 dplyr 和 magrittr 将数据操作通过管道传输到需要数字向量作为输入的函数中。具体来说,我希望我的管道结果进入 ecdf() 函数(它从向量生成经验累积分布函数)。
这是我想做的工作:
x = rnorm(100)
t = sample(c("A","B"), replace = TRUE)
df = data.frame(x,t)
df_ecdf = filter(df, x > 0) %>%
filter(t == "A") %>%
select(x) %>%
as.vector() %>%
ecdf()
但是,这不起作用,因为 ecdf() 给出了错误:
Error in `[.data.frame`(x, order(x, na.last = na.last, decreasing = decreasing)) :
undefined columns selected
这是有道理的,因为通过 as.vector() 的管道实际上不会产生数据向量。它会生成一个列表,我不知道如何使用管道将其转换为数字向量。
任何帮助将不胜感激。
编辑
正如下面 BrodieG 的回答,解决方案是在 ecdf 之前通过管道输入 unlist,并且也不需要括号(根据 Ananda Mahto):
df_ecdf = filter(df, x > 0) %>%
filter(t == "A") %>%
select(x) %>%
unlist %>%
ecdf
【问题讨论】:
标签: r type-conversion dplyr