在 quarto Revealjs 中,代码块的字体大小小于文本的字体大小。更改基本字体(使用fontsize)只会按比例更改所有内容。我希望能够调整代码块的相对字体大小。我认为这涉及自定义 CSS,但我不确定要更改什么。
---
format:
revealjs
---
* Here is text
```{r echo=TRUE, eval=FALSE}
str(mtcars)
```
Run Code Online (Sandbox Code Playgroud)
输出如下所示:

更新:修改我提出的问题的答案font-size。code.sourceCode修改font-sizeforcode会更改代码、输出的大小,并且还会更改所有逐字元素的字体大小。不幸的是,对于许多用例来说,它会改变太多。
这是一个代码片段:
y <- purrr::map(1:2, ~ c(a=.x))
test1 <- dplyr::bind_rows(y)
test2 <- do.call(dplyr::bind_rows, y)
Run Code Online (Sandbox Code Playgroud)
第一次调用bind_rows(test1)会产生错误
Error in bind_rows_(x, .id) : Argument 1 must have names
Run Code Online (Sandbox Code Playgroud)
另一方面,使用do.call来调用bind_rows(test2)可以按预期工作:
test2
# A tibble: 2 x 1
a
<int>
1 1
2 2
Run Code Online (Sandbox Code Playgroud)
为什么?这使用的是dplyr 0.7.6和purrr 0.2.5。如果我使用map_df代替map,它将失败,并显示相同的错误。
注意:在我看来,这个问题与bind_rows_(x,.id)中的错误并不相同:参数1必须具有在purrr中使用map_df的名称。
编辑:解决此问题的另一种方法是首先显式创建一个数据框:
y <- purrr::map(1:2, ~ data.frame(a=.x))
Run Code Online (Sandbox Code Playgroud)
test1并且test2现在创建时没有错误并且完全相同。
或者,这test2一步创建数据帧:
purrr::map_df(1:2, ~ data.frame(a=.x))
Run Code Online (Sandbox Code Playgroud) 包含" #"(例如公寓号码)的地址经常会给出错误的位置结果,包括ggmap :: geocode和谷歌地图,因此这不是严格意义上的R问题.在此示例中,#3在街道地址后添加" "会将位置结果从伊利诺伊州更改为加利福尼亚州:
> test <- geocode('1200 Davis St, Evanston, IL 60202', source='google', output='more')
> test[, c('lon', 'lat', 'administrative_area_level_1')]
lon lat administrative_area_level_1
1 -87.68978 42.04627 Illinois
> testhash <- geocode('1200 Davis St #3, Evanston, IL 60202', source='google', output='more')
> testhash[, c('lon', 'lat', 'administrative_area_level_1')]
lon lat administrative_area_level_1
1 -122.1692 37.72169 California
Run Code Online (Sandbox Code Playgroud)
如果您直接尝试谷歌地图,有时在地址中添加哈希似乎会混淆查找,从而产生各种地理上分散的结果.这并不总是发生,但根据我的经验经常发生.它很容易修复(地理编码时不需要公寓号码),但我想知道为什么会发生这种情况,以及是否有其他关于输入地址的注意事项.
这个问题是"为什么",而不是如何.在下面的代码中,我试图理解为什么用整个向量dplyr::mutate计算一个自定义函数(f())而不用另一个自定义函数(g()).究竟在mutate做什么?
set.seed(1);sum(rnorm(100, c(0, 10, 100)))
f=function(m) {
set.seed(1)
sum(rnorm(100, mean=m))
}
g <- function(m) sin(m)
df <- data.frame(a=c(0, 10, 100))
y1 <- mutate(df, asq=a^2, fout=f(a), gout=g(a))
y2 <- rowwise(df) %>%
mutate(asq=a^2, fout=f(a), gout=g(a))
y3 <- group_by(df, a) %>%
summarize(asq=a^2, fout=f(a), gout=g(a))
Run Code Online (Sandbox Code Playgroud)
对于所有三列,asq,fout,和gout,评价是横行中y2和y3,结果是相同的.但是,y1$fout对于所有三行,这是3640.889,这是评估的结果sum(rnorm(100, c(0, 10, 100))).因此该函数f()正在评估每一行的整个向量.
一个密切相关的问题已经在R dplyr(Pass自定义函数)中的其他位置进行mutate/transform,但是没有解释"为什么".
我想在mapply中将函数名称作为参数传递:
f2 <- function(a, b) a + b^2
f <- function(a, b, func) func(a, b)
f(1, 3, f2) ## returns 10
mapply(f2, 1:2, 3) ## returns [1] 10 11
mapply(function(a, b) f(a, b, f2), 1:2, 3) ## returns [1] 10 11
mapply(f, 1:2, 3, f2) ## fails
Run Code Online (Sandbox Code Playgroud)
最后一次mapply调用会产生错误
Error in dots[[3L]][[1L]] : object of type 'closure' is not subsettable
有什么办法吗?