小编Mri*_*arg的帖子

R 中的 Facet_Wrap 标签

我正在尝试使用 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 中的变量。有没有办法做到这一点?任何线索表示赞赏,谢谢!

r ggplot2 facet-wrap

6
推荐指数
2
解决办法
4708
查看次数

对多个dplyr过滤条件使用整齐的eval

我是整理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)

r tidyverse tidyeval

5
推荐指数
1
解决办法
934
查看次数

基于空间拆分R中的列

我有一个位置列,如下所示-

   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)

split r tidyr

2
推荐指数
1
解决办法
9378
查看次数

解决R中的XGBoost问题

我有一个包含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%.这可能是我收到错误的原因吗?

r xgboost

1
推荐指数
2
解决办法
5365
查看次数

标签 统计

r ×4

facet-wrap ×1

ggplot2 ×1

split ×1

tidyeval ×1

tidyr ×1

tidyverse ×1

xgboost ×1