我正在尝试创建一个函数,该函数从本质上为我提供MODE ...或MODE-X(第二至第X个最常用值&以及数据帧中每一列的关联计数。
我不知道自己可能会缺少什么,正在寻找帮助吗?我相信这与将变量传入dplyr函数有关。
library(tidyverse)
myfunct_get_mode = function(x, rank=1){
mytable = dplyr::count(rlang::sym(x), sort = TRUE)
names(mytable)= c('variable','counts')
# return just the rank specified...such as mode or mode -1, etc
result = table %>% dplyr::slice(rlang::sym(rank))
return(result)
}
mtcars %>% lapply(. %>% (function(x) myfunct_get_mode(x, rank=2)))
答案 0 :(得分:1)
您的功能存在一些问题:
mtcars %>% lapply(. %>% (function(x) print(x)))
一起检查,您的x
实际上是mtcars
的整个列。要获取列名,请将函数应用于names(mtcars)
。但是随后,您还必须指定要处理的数据框。 sym
前面使用!!
来获得rlang::sym(x)
。 rank
不是变量名,因此这里不需要rlang::sym
。 table
在函数的倒数第二行应为mytable
。 那么它如何工作(尽管可能有更好的方法):
myfunct_get_mode = function(df, x, rank=1){
mytable = count(df, !!rlang::sym(x), sort = TRUE)
names(mytable)= c('variable','counts')
# return just the rank specified...such as mode or mode -1, etc
result = mytable %>% slice(rank)
return(result)
}
names(mtcars) %>% lapply(function(x) myfunct_get_mode(mtcars, x, rank=2))
答案 1 :(得分:0)
如果我们需要在Context initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
dataSource = (DataSource)envContext.lookup("jdbc/ParkingBookSystem");
中使用它,可以使用list
map