通常,当人们想要sparklyr在自定义函数(即 ** 非翻译函数)上使用时,他们会将它们放在spark_apply(). 然而,我只遇到例子,其中一个单一的本地数据帧或者是copy_to()或spark_read_csv()到远程数据源,然后使用spark_apply()它。一个示例,仅用于说明目的:
library(sparklyr)
sc <- spark_connect(master = "local")
n_sim = 100
iris_samps <- iris %>% dplyr::filter(Species == "virginica") %>%
sapply(rep.int, times=n_sim) %>% cbind(replicate = rep(1:n_sim, each = 50)) %>%
data.frame() %>%
dplyr::group_by(replicate) %>%
dplyr::sample_n(50, replace = TRUE)
iris_samps_tbl <- copy_to(sc, iris_samps)
iris_samps_tbl %>%
spark_apply(function(x) {mean(x$Petal_Length)},
group_by = "replicate") %>%
ggplot(aes(x = result)) + geom_histogram(bins = 20) + ggtitle("Histogram of 100 Bootstrapped Means using sparklyr")
Run Code Online (Sandbox Code Playgroud)
因此,只要数据驻留在 …
ggrepel允许通过排斥彼此太近的标签来避免文本标签重叠。
该算法取决于查看窗口大小,并且当窗口大小更改时会发生回调。
如果算法无法避免给定窗口大小的重叠,则会发出警告:
Warning messages:
1: ggrepel: 178 unlabeled data points (too many overlaps). Consider increasing max.overlaps
Run Code Online (Sandbox Code Playgroud)
我想抑制这些警告,与 的值无关max.overlaps,因为它们可能会延迟并且断章取义。
延迟的原因可能是首次打印后或更改查看窗口宽度后的回调,请参见下面的示例:
library(ggplot2)
library(ggrepel)
N <- 50
data <- data.frame(x=1:N,y=rep(1,N),label = paste0("Text",1:N))
ggplot(data)+
geom_point(aes(x=x,y=y))+
geom_text_repel(aes(x=x,y=y,label=label),hjust=0, vjust=0, box.padding = 0.5, max.overlaps = 20)
# If the viewing window width is OK, no warning!
# Execute anything in console
1
#[1] 1
# This is OK!
Run Code Online (Sandbox Code Playgroud)
# Now reduce window width with mouse
# No warning yet
# Execute anything in …Run Code Online (Sandbox Code Playgroud) 我正在尝试进行交叉连接(来自此处的原始问题),并且我有 500GB 的内存。问题是最后的data.table行数超过 2^31 行,所以我收到此错误:
Error in vecseq(f__, len__, if (allow.cartesian || notjoin || !anyDuplicated(f__, :
Join results in more than 2^31 rows (internal vecseq reached physical limit). Very likely misspecified join. Check for duplicate key values in i each of which join to the same group in x over and over again. If that's ok, try by=.EACHI to run j for each group to avoid the large allocation. Otherwise, please search for this error message …Run Code Online (Sandbox Code Playgroud) 我有一个 400,000 行的文件,其中包含需要进行地理编码的手动输入地址。文件中的相同地址有很多不同的变体,因此多次对同一地址使用 API 调用似乎很浪费。
为了减少这种情况,我想减少这五行:
Address
1 Main Street, Country A, World
1 Main St, Country A, World
1 Maine St, Country A, World
2 Side Street, Country A, World
2 Side St. Country A, World
Run Code Online (Sandbox Code Playgroud)
下降到两个:
Address
1 Main Street, Country A, World
2 Side Street, Country A, World
Run Code Online (Sandbox Code Playgroud)
使用该stringdist包,您可以将字符串的“单词”部分组合在一起,但字符串匹配算法不区分数字。这意味着它将同一街道上的两个不同房屋号码归为同一地址。
为了解决这个问题,我想出了两种方法:首先,尝试使用正则表达式将数字和地址手动分离到单独的列中,然后重新加入它们。这样做的问题是,有这么多手动输入的地址,似乎有数百种不同的边缘情况,而且它变得笨拙。
使用这个关于分组的答案和这个将单词转换为数字的答案,我有第二种方法来处理边缘情况,但在计算上非常昂贵。有没有更好的第三种方法来做到这一点?
library(gsubfn)
library(english)
library(qdap)
library(stringdist)
library(tidyverse)
similarGroups <- function(x, thresh = 0.8, method = "lv"){
grp <- integer(length(x))
Address …Run Code Online (Sandbox Code Playgroud) 我有一个关于svycontrast()使用survey包调用函数中的变量的问题。我正在尝试针对固定参数自动进行一些对比。我可以这样做没有问题:
library(survey)
data(api)
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
diff <- svyby(~enroll, by = ~cnum, dclus1, na.rm.all = FALSE, svymean, covmat = T, vartype = "se")
parameter <- 550
svycontrast(diff, quote(`1` - parameter))
# nlcon SE
# contrast 2.8182 0
Run Code Online (Sandbox Code Playgroud)
但是,我花了几个小时试图弄清楚如何调用rowname“1”,但是通过不同的方法,我不断收到以下错误消息:
row <- quote(1)
svycontrast(diff, quote(row - parameter))
Error in row - parameter : non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激。
我正在尝试使用特定投影(称为 aitoff)在地图上绘制 ggplot2 (v3.3.2) 数据点,这对于天空图尤其有用。
这样做时,图会在 x 轴上“裁剪”,即轴的边缘位于图的外部。我尝试了一些事情(例如调整边距),但没有成功。你能帮忙让这部分情节可见吗?
这是重现问题的代码,即位于 (0,0) 的点不可见。
skydata <- data.frame(RA=c(0,180,360), Dec=c(0,10,20))
ggplot(skydata) +
geom_point(aes(RA,Dec)) +
coord_map(projection="aitoff",orientation=c(90,180,0)) +
scale_y_continuous(breaks=(-2:2)*30,limits=c(-90,90)) +
scale_x_continuous(breaks=(0:8)*45,limits=c(0,360), labels=c("","","","","","","","","")) +
labs(x="R.A.(°)", y="Decl. (°)",title="Map of the sky")
Run Code Online (Sandbox Code Playgroud)
我希望我说得够清楚了……非常感谢!
'asis' 块对于在 Markdown 文档中输出对象列表非常有用,请参阅以下示例:Highcharter、DT、Leaflet,...
但是,在上面的示例中,如果渲染器在前一个块中没有被调用一次,则对象列表将不会打印,以便它被初始化:这是一个棘手的解决方法,我通过试验找到了更多解决方案/错误比通过在文档中查找它更容易。
这是一个可重现的问题,也发布在https://github.com/rstudio/rmarkdown/issues/1877上:
---
title: "Test"
output:
html_document
---
```{r,echo=F}
library(DT)
library(rmarkdown)
library(purrr)
library(knitr)
df_list <- list("cars" = mtcars, "flowers" = iris)
knitr::opts_chunk$set(echo = FALSE, warning = FALSE, message = FALSE)
```
```{r}
# If this first initialization isn't run, tabs won't print
DT::datatable(data.frame())
```
# Test tabs {.tabset}
```{r, results='asis' }
imap(df_list, ~{
cat('## Subtab ',.y,'\n')
cat('\n')
DT::datatable(.x) %>%
htmltools::tagList() %>% as.character() %>% cat() })
```
Run Code Online (Sandbox Code Playgroud) 我正在学习如何填写表格并rvest在 R 中提交,当我想在 stackoverflow 中搜索 ggplot 标签时,我陷入了困境。这是我的代码:
url<-"https://stackoverflow.com/questions"
(session<-html_session("https://stackoverflow.com/questions"))
(form<-html_form(session)[[2]])
(filled_form<-set_values(form, tagQuery = "ggplot"))
searched<-submit_form(session, filled_form)
Run Code Online (Sandbox Code Playgroud)
我有错误:
Submitting with '<unnamed>'
Error in parse_url(url) : length(url) == 1 is not TRUE
Run Code Online (Sandbox Code Playgroud)
按照这个问题(表单提交时出现 rvest 错误)我尝试了几种方法来解决这个问题,但我不能:
filled_form$fields[[13]]$name<-"submit"
filled_form$fields[[14]]$name<-"submit"
filled_form$fields[[13]]$type<-"button"
filled_form$fields[[14]]$type<-"button"
Run Code Online (Sandbox Code Playgroud)
任何帮助家伙
在使用purrr中的 Tidyverse 包时R,我看到该map()函数返回一个列表。
library(tidyverse)
set.seed(123)
map(1:5, ~rnorm(3))
#> [[1]]
#> [1] -0.5604756 -0.2301775 1.5587083
#>
#> [[2]]
#> [1] 0.07050839 0.12928774 1.71506499
#>
#> [[3]]
#> [1] 0.4609162 -1.2650612 -0.6868529
#> ......
Run Code Online (Sandbox Code Playgroud)
我想将此列表转换为包含 3 列的数据框。一种选择是使用do.call(rbind, .). 不过,我也注意到这个map_dfr()功能的存在。
以与 相同的方式使用此函数map()会产生错误。
map_dfr(1:5, ~rnorm(3))
#> Error: Argument 1 must have names.
Run Code Online (Sandbox Code Playgroud)
问题
导致此错误的函数map()和函数之间有什么区别?map_dfr()您应该如何使用该map_dfr()函数直接在映射函数中绑定行?
我有两个数据框,例如虚拟样本 df1(主数据集)和 df2。这些数据原本来自于两个不同的日志数据。
df1 始终是从午夜 02:00 到第二天 02:00 的完整数据集,在此期间具有不同的流值。但 df2 仅在特定时间段(02:00 到第二天 02:00 之间)有活动时才有价值。
我想知道如何将 df1 和 df2 结合起来。我的目标是拥有类似 df1 的完整数据集(从 02:00 到第二天 02:00)以及附加变量 - 代码 - 如果 df2 中的开始/结束时间没有活动/代码,则此变量可以为空。有时,如果仅在开始/结束时间段的某些部分有活动,则 df1 中的行需要分成 2 个
我正在寻找与此类似的结果。仅显示 4 行作为示例
id STREAM_1 STREAM_2 STREAM_3 START END
401 NIVH-ON IN null 2022-08-16 7:43:30 2022-08-16 7:45:00
401 INVH-ON OUT 12be4 2022-08-16 7:45:00 2022-08-16 7:49:00
401 INVH-ON OUT 12be4 2022-08-16 7:49:00 2022-08-16 8:15:00
Run Code Online (Sandbox Code Playgroud)
df1:
df1 <- tibble::tribble(
~id, ~STREAM_1, ~STREAM_2, ~START, ~END,
401L, "NIVH-OFF", "IN", "2022-08-16 …Run Code Online (Sandbox Code Playgroud) r ×10
data.table ×2
ggplot2 ×2
merge ×2
tidyverse ×2
apache-arrow ×1
binary ×1
callback ×1
cross-join ×1
dataframe ×1
dplyr ×1
jpeg ×1
knitr ×1
mapping ×1
purrr ×1
qdap ×1
r-markdown ×1
rvest ×1
sparklyr ×1
stringdist ×1
survey ×1
timestamp ×1
warnings ×1