小编Wal*_*ldi的帖子

从 JPEG 创建 Spark 对象并在非翻译函数上使用 spark_apply()

通常,当人们想要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)

因此,只要数据驻留在 …

binary jpeg r sparklyr

15
推荐指数
0
解决办法
199
查看次数

如何使用 ggrepel 抑制警告

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)

warnings r callback ggplot2

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

R 中的数据表包是否支持超过 2^31 行的数据表?

我正在尝试进行交叉连接(来自此处的原始问题),并且我有 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)

merge r cross-join data.table apache-arrow

8
推荐指数
1
解决办法
1044
查看次数

R:将相似地址组合在一起

我有一个 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)

r qdap dplyr stringdist tidyverse

8
推荐指数
2
解决办法
336
查看次数

在 R 调查包中将表达式作为参数传递

我有一个关于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)

任何帮助将不胜感激。

r survey

8
推荐指数
2
解决办法
131
查看次数

使用 Aitoff 投影在 x 轴的“边缘”上进行地图切割

我正在尝试使用特定投影(称为 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)

我希望我说得够清楚了……非常感谢!

r ggplot2

7
推荐指数
1
解决办法
145
查看次数

在“asis”R Markdown 块中初始化 JS 渲染器的推荐方法

'asis' 块对于在 Markdown 文档中输出对象列表非常有用,请参阅以下示例:HighcharterDTLeaflet,...

但是,在上面的示例中,如果渲染器在前一个块中没有被调用一次,则对象列表将不会打印,以便它被初始化:这是一个棘手的解决方法,我通过试验找到了更多解决方案/错误比通过在文档中查找它更容易。

这是一个可重现的问题,也发布在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)

r knitr r-markdown

7
推荐指数
2
解决办法
1021
查看次数

在 R 中使用 rvest 填充和提交搜索

我正在学习如何填写表格并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)

任何帮助家伙

r rvest

7
推荐指数
1
解决办法
164
查看次数

R中map()与map_dfr()的区别

在使用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()函数直接在映射函数中绑定行?

mapping r dataframe purrr

7
推荐指数
1
解决办法
1万
查看次数

R中基于相似时间间隔合并两个数据帧

我有两个数据框,例如虚拟样本 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)

merge timestamp r data.table tidyverse

7
推荐指数
1
解决办法
658
查看次数