小编EKt*_*age的帖子

data.table ..用j中的函数表示

我试图使用data.table的..函数表示法,这是我到目前为止的代码:

set.seed(42)
dt <- data.table(
  x = rnorm(10),
  y = runif(10)
)

test_func <- function(data, var, var2) {
  vars <- c(var, var2)
  data[, ..vars]
}

test_func(dt, 'x', 'y') # this works

test_func2 <- function(data, var, var2) {
  data[, ..var]
}

test_func2(dt, 'x', 'y') # this works too

test_func3 <- function(data, var, var2) {
  data[, sum(..var)]
}

test_func3(dt, 'x', 'y') 
# this does not work
# Error in eval(jsub, SDenv, parent.frame()) : object '..var' not found
Run Code Online (Sandbox Code Playgroud)

一旦它包含在另一个函数中,它似乎data.table无法识别.我知道我可以用它来实现结果,但我想知道我在大多数情况下都在使用最佳实践. …

r data.table

10
推荐指数
1
解决办法
158
查看次数

ggplot2在组合多个geom图层后删除legend.key框

我是ggplot2的新手,在Excel中重现类似的图表一直很有挑战性.我几乎得到它的工作,但现在我需要找出一种方法来使geom_point/line的图例键(图例中的第3项)不显示它周围的框.

注意:我知道使用有类似问题的答案+ theme(legend.key = element_blank()),但它对图例没有影响.我怀疑它与scale_*_manual代码中的内容有关.任何其他解决方案将真正感激!

test <- data.frame(
  group      = 1:5,
  cnt        = rep(600, 5),
  pct_cnt    = rep(0.2, 5),
  prem       = c(12000000, 9800000, 8700000, 11000000, 3500000),
  pct_prem   = c(0.266666667, 0.217777778, 0.193333333, 0.244444444, 
                 0.077777778),
  relativity = c(1.5, 1.2, 1, 0.8, 0.4)
)

theme_set(theme_minimal())
normalizer <- round(max(test$relativity) / max(test$pct_prem), 0)

ggplot(test, aes(x = group)) + 
  geom_bar(aes(y = pct_prem, fill = 'prem', color = 'prem'), stat = 'identity', position = position_nudge(x = -0.1), width = 0.2) +
  geom_bar(aes(y …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

4
推荐指数
1
解决办法
345
查看次数

标签 统计

r ×2

data.table ×1

ggplot2 ×1