我正在尝试使用 facet 更改 ggplot 图的标签,并且正在使用数据帧中未分面的变量。代码如下-
iris %>%
group_by(Species) %>%
summarise(lbl = mean(Petal.Length)) %>%
select(lbl) %>%
unlist() -> lbls
lbls <- map2(unique(iris$Species), lbls, paste, sep = "\n")
iris %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width, group = 1)) +
geom_point() +
facet_wrap(~ Species, labeller = lbls)
Run Code Online (Sandbox Code Playgroud)
但是,这给了我以下错误-
Error in cbind(labels = list(), list(`{`, if (!is.null(.rows) ||
!is.null(.cols)) { :
number of rows of matrices must match (see arg 2)
Run Code Online (Sandbox Code Playgroud)
我查看了 labeller 函数和不同的选项,但其中大多数似乎是针对包含在 facet 中的变量。有没有办法做到这一点?任何线索表示赞赏,谢谢!
我是整理eval并尝试编写泛型函数的新手 - 我现在正在努力的一件事就是为分类变量编写多个过滤条件.这就是我现在正在使用的 -
create_expr <- function(name, val){
if(!is.null(val))
val <- paste0("c('", paste0(val, collapse = "','"), "')")
paste(name, "%in%", val)
}
my_filter <- function(df, cols, conds){
# Args:
# df: dataframe which is to be filtered
# cols: list of column names which are to be filtered
# conds: corresponding values for each column which need to be filtered
cols <- as.list(cols)
conds <- as.list(conds)
args <- mapply(create_expr, cols, conds, SIMPLIFY = F)
if(!length(args))
stop(cat("No filters provided"))
df <- df …
Run Code Online (Sandbox Code Playgroud) 我有一个位置列,如下所示-
Location
San Jose CA
Santa Clara CA
Run Code Online (Sandbox Code Playgroud)
我想分成两列。我正在使用 tidyr 中的单独函数,但是将 sep 参数指定为“”给了我以下内容-
City State
San Jose
Santa Clara
Run Code Online (Sandbox Code Playgroud)
如何仅根据第二个空格拆分列?
structure(list(Location = c("San Jose CA", "Santa Clara CA")),
.Names = "Location", class = "data.frame", row.names = c(NA, -2L))
Run Code Online (Sandbox Code Playgroud) 我有一个包含25000行和761列的数据集,其中包含一个二进制响应列.我的二进制响应的值为'-1'和'1'.我试图在它上面运行xgboost,并继续收到一个错误,上面写着 -
xg_base<-xgboost(data = features,label = output,objective="binary:logistic",eta=1,nthreads=2,nrounds = 10
, verbose = T, print.every.n = 5)
Error in xgb.iter.update(bst$handle, dtrain, i - 1, obj) :
label must be in [0,1] for logistic regression
Run Code Online (Sandbox Code Playgroud)
我使用以下命令更改了我的响应级别 -
levels(output)[levels(output)=="-1"] <- "0"
Run Code Online (Sandbox Code Playgroud)
我仍然一直得到同样的错误,我不确定究竟是什么问题.一个重要的一点是,这是一个罕见的事件检测问题,阳性病例的比例占总观察量的1%.这可能是我收到错误的原因吗?