我想知道是否有一种方法可以使用函数with summarise(dplyr 0.1.2)返回多个值(例如包中的describe函数psych).
如果没有,是因为它尚未实施,还是有理由不是一个好主意?
例:
require(psych)
require(ggplot2)
require(dplyr)
dgrp <- group_by(diamonds, cut)
describe(dgrp$price)
summarise(dgrp, describe(price))
Run Code Online (Sandbox Code Playgroud)
生产: Error: expecting a single value
在尝试获取分组滞后变量(不可能仅使用lag)的过程中,建议的解决方案是将数据拉出,滞后于不同的行,然后重新加入它.
我更喜欢在不创建中间对象的情况下这样做,并且希望在链中间进行.然而,它似乎没有像我期望的那样工作,并且问题似乎是.在left_join中使用嵌套链之间的一些交互.
require(tidyverse)
#> Loading required package: tidyverse
df <- data.frame(Team = c("A", "A", "A", "A", "B", "B", "B", "C", "C", "D", "D"),
Date = c("2016-05-10","2016-05-10", "2016-05-10", "2016-05-10",
"2016-05-12", "2016-05-12", "2016-05-12",
"2016-05-15","2016-05-15",
"2016-05-30", "2016-05-30"),
Points = c(1,4,3,2,1,5,6,1,2,3,9)
)
#This works:
df %>% left_join(x = ., y = df %>%
distinct(Team, Date) %>%
mutate(Date_Lagged = lag(Date)))
#> Joining, by = c("Team", "Date")
#> Team Date Points Date_Lagged
#> 1 A 2016-05-10 1 <NA>
#> 2 A 2016-05-10 …Run Code Online (Sandbox Code Playgroud) results = 'asis'我正在使用 RMarkdown 在功能上创建一个使用purrr::map. 每次迭代时都会从块中产生多个图purrr。它们中的大多数大小相同,可以使用图形大小的块选项进行设置。然而,其中一两个需要具有不同的尺寸。由于循环/映射的设置方式,不可能将代码分成不同的块。
我发现的最接近的是http://michaeljw.com/blog/post/subchunkify/,但是当我在需要不同大小的图上使用它时,它会导致使用 print() 函数输出的第一次迭代的图在 subchunkify 的地块位置进行回收。
有没有一种不同的、不那么老套的方法来做到这一点?或者 subchunkify 代码中是否有一些明显可以修复的内容?
这是subchunkify():
subchunkify <- function(g, fig_height=7, fig_width=5) {
g_deparsed <- paste0(deparse(
function() {g}
), collapse = '')
sub_chunk <- paste0("
`","``{r sub_chunk_", floor(runif(1) * 10000), ", fig.height=", fig_height, ", fig.width=", fig_width, ", echo=FALSE}",
"\n(",
g_deparsed
, ")()",
"\n`","``
")
cat(knitr::knit(text = knitr::knit_expand(text = sub_chunk), quiet = TRUE))
}
Run Code Online (Sandbox Code Playgroud) 我正在努力编写一个在dplyr::mutate().
由于rowwise() %>% sum()在大型数据集上速度相当慢,因此建议的替代方案是返回到 baseR。我希望按如下方式简化此过程,但在 mutate 函数中传递数据时遇到问题。
require(tidyverse)
#> Loading required package: tidyverse
#I'd like to write a function that works inside mutate and replaces the rowSums(select()).
cars <- as_tibble(cars)
cars %>%
mutate(sum = rowSums(select(., speed, dist), na.rm = T))
#> # A tibble: 50 x 3
#> speed dist sum
#> <dbl> <dbl> <dbl>
#> 1 4. 2. 6.
#> 2 4. 10. 14.
#> 3 7. 4. 11.
#> 4 7. 22. 29.
#> …Run Code Online (Sandbox Code Playgroud) 我想让 RStudio 在我的本地机器 (os x) 上运行,并在远程计算机上运行 R 可执行文件。
我知道我可以在远程机器上运行 RStudio Server 并使用 Web 界面连接到它,但是由于延迟和移动窗口和使用快捷方式的能力有限,我讨厌使用 Web 界面进行此类操作。
由于 RStudio 不是独立的,而是指向本地机器上其他地方的 R 可执行文件(在一个可以改变的位置),理论上这个指针似乎可以指向远程位置。(有什么原因这是不正确的吗?)
我怎样才能做到这一点?
我再次对文档rlang和错误消息感到困惑。我已经使用双刘海和三重刘海、 、 、 、 以及其他所有名称不明确的 rlang 函数尝试了 20 种:=不同quo的enquo迭代ensym。
如果您感到沮丧,那是因为每次我尝试使用rlang处理对象名称的变量时都会遇到同样的问题。我错过了一些重要的事情吗?我是傻子吗?函数rlang名称和文档真的很差吗?
我正在尝试确定 a 中变量的类tibble。除了帮助执行此操作之外,如果有人可以建议我如何在文档中找到此问题的答案,我将不胜感激。
require(tidyverse)
require(rlang)
x <- enframe(names(mtcars), name = NULL, value = "var") %>%
add_column(df = "mtcars")
x %>% mutate(cls = class(sym(paste0(df, "$", var))))
#> Only strings can be converted to symbols
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.3.0)于 2019-10-27 创建
有没有办法将 Rmd 输出设置为“内联块输出”和“控制台中的块输出”?
我喜欢将内容内联,但我也喜欢同时将绘图转到另一台监视器上的缩放绘图窗口。有什么设置可以同时允许两者吗?
IE:同时具有这两个设置:
output:
html_document:
toc: true
toc_float: true
toc_depth: 3
editor_options:
chunk_output_type: inline
Run Code Online (Sandbox Code Playgroud)
和
output:
html_document:
toc: true
toc_float: true
toc_depth: 3
editor_options:
chunk_output_type: console
Run Code Online (Sandbox Code Playgroud) 我有一个带有一些长标签和长标题的情节。我正在使用coord_flip(),因此由于标签的原因,绘图边距之外有很多空间。默认情况下,标题受绘图边距限制。
如何使标题延伸到绘图边距之外(向左),以便它可以跨越整个宽度?这是一个例子:
ggplot(diamonds, aes(x = cut)) +
geom_bar() +
coord_flip() +
scale_x_discrete("Cut",
labels = c("Fair" = "Fair and a very long extra thing",
"Good" = "Good and a very long extra thing",
"Very Good" = "VG and a very long extra thing",
"Premium" = "P and a very long extra thing. A very long label, just because",
"Ideal" = "I and a very long extra thing")) +
ggtitle("This is my very long title. Long long title. Very long. …Run Code Online (Sandbox Code Playgroud) 我想在kable/中使用条件格式kableExtra根据行中的范围为值着色。我找到了很多关于如何通过列中的值来完成此操作的示例,但我很难按行来完成此操作。
以下是列值的示例:
require(tidyverse)
require(knitr)
require(kableExtra)
iris[1:10, ] %>%
mutate_if(is.numeric, function(x) {
cell_spec(x, bold = T,
color = spec_color(x, end = 0.9),
font_size = spec_font_size(x))
}) %>%
mutate(Species = cell_spec(
Species, color = "white", bold = T,
background = spec_color(1:10, end = 0.9, option = "A", direction = -1)
)) %>%
kable(escape = F, align = "c") %>%
kable_styling(c("striped", "condensed"), full_width = F)
Run Code Online (Sandbox Code Playgroud)
但是,我希望颜色由每行中的值范围确定。当然,在此示例中,第一列始终是最大的,最后一列是最小的,因此它们都会朝那个方向移动,但在我的实际数据中,最高值和最低值的位置位于每行的不同列中。
我试图让标签与平滑线上的值对齐。虽然我看到的其他答案建议创建一个预测值的数据列,但我正在寻找一种更清洁的替代方案,它使用已经为 ggplot 生成的数据。
有关问题,请参见下面的示例:
require(tidyverse)
require(ggrepel)
set.seed(1)
df <- data.frame(x = rep(1:100, 5), y = c(sample(1:20, 100, T), sample(21:40, 100, T), sample(41:60, 100, T), sample(61:80, 100, T), sample(81:100, 100, T)), group = rep(letters[1:5], each = 100))
df <- tbl_df(df)
df %>%
ggplot(aes(x = x, y = y, label = group, color = group)) +
geom_smooth() +
guides(color = F) +
geom_text_repel(data = . %>% filter(x == max(x)), aes(x = x, y = y, label = group), nudge_x = 50)
Run Code Online (Sandbox Code Playgroud)
有没有办法在不使用 …