小编mat*_*sho的帖子

逐行迭代就像应用purrr一样

如何使用purrr :: map实现行式迭代?

这是我用标准行方式应用的方法.

df <- data.frame(a = 1:10, b = 11:20, c = 21:30)

lst_result <- apply(df, 1, function(x){
            var1 <- (x[['a']] + x[['b']])
            var2 <- x[['c']]/2
            return(data.frame(var1 = var1, var2 = var2))
          })
Run Code Online (Sandbox Code Playgroud)

但是,这不是太优雅,我宁愿用purrr来做.可能(也可能不会)更快.

r apply purrr

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

防止dplyr加入NA

我想完全加入2 df.令我惊讶的是,dplyr的默认行为是加入NA,如果它们存在于两个df中.有没有阻止dplyr执行此操作的功能?

以下是内部联接的示例:

x <- data.frame(a = c(5, NA, 9), b = 1:3)
y <- data.frame(a = c(5, NA, 9), c = 4:6)
z <- dplyr::inner_join(x, y, by = 'a')
Run Code Online (Sandbox Code Playgroud)

我希望z只包含2条记录,而不是3.理想情况下,我希望这样做而不必事先用NA手动过滤掉记录,然后将它们附加到结果中(因为这看起来很笨拙).

r dplyr

15
推荐指数
1
解决办法
664
查看次数

在mutate中使用purrr :: pmap创建list-column

我理解如何使用map迭代df中的参数并创建一个新的列表列.

例如,

params <- expand.grid(param_a = c(2, 4, 6)
                  ,param_b = c(3, 6, 9)
                  ,param_c = c(50, 100)
                  ,param_d = c(1, 0)
                  )

df.preprocessed <- dplyr::as.tbl(params) %>%
  dplyr::mutate(test_var = purrr::map(param_a, function(x){
      rep(5, x)
      }
    ))
Run Code Online (Sandbox Code Playgroud)

但是,如果我想指定2个以上的参数,如何在pmap中使用类似的语法?

df.preprocessed <- dplyr::as.tbl(params) %>%
  dplyr::mutate(test_var = purrr::pmap(list(x = param_a
                                     ,y = param_b
                                     ,z = param_c
                                     ,u = param_d), function(x, y){
                                        rep(5,x)*y
                                     }
  )
  )
Run Code Online (Sandbox Code Playgroud)

错误输出:

mutate_impl(.data,dots)出错:评估错误:未使用的参数(z = .l [[c(3,i)]],u = .l [[c(4,i)]]).

r dplyr purrr

11
推荐指数
2
解决办法
2628
查看次数

如何使用DT包隐藏列 - columnDefs参数不起作用

我想使用DT包在数据框中隐藏一列(下面例子中的col4).

我已经在这里找到了代码片段,但没有用 - col4仍然显示.这是我的sessionInfo,以及我可重复的例子.

> sessionInfo()
R version 3.2.3 (2015-12-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)

locale:
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252   
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  grDevices utils    
[5] datasets  methods   base     

other attached packages:
[1] DT_0.1.55    shiny_0.13.1

loaded via a namespace (and not attached):
 [1] htmlwidgets_0.6 magrittr_1.5   
 [3] R6_2.1.2        htmltools_0.3.5
 [5] tools_3.2.3     yaml_2.1.13    
 [7] Rcpp_0.12.4     jsonlite_0.9.19
 [9] digest_0.6.9    xtable_1.8-2   
[11] httpuv_1.3.3 …
Run Code Online (Sandbox Code Playgroud)

shiny dt

9
推荐指数
1
解决办法
6880
查看次数

在dplyr中使用列表列函数进行变异

我试图计算源向量和tibble中的比较向量之间的Jaccard相似性.

首先,使用names_字段(字符串向量)创建一个tibble.使用dplyr的mutate,创建names_vec,列表列,其中每行现在是一个向量(向量的每个元素都是一个字母).

然后,使用列jaccard_sim创建一个新的tibble,它应该计算Jaccard相似度.

source_vec <- c('a', 'b', 'c')

df_comp <- tibble(names_ = c("b d f", "u k g", "m o c"),
              names_vec = strsplit(names_, ' '))

df_comp_jaccard <- df_comp %>%
   dplyr::mutate(jaccard_sim = length(intersect(names_vec, source_vec))/length(union(names_vec, source_vec)))
Run Code Online (Sandbox Code Playgroud)

jaccard_sim中的所有值都为零.但是,如果我们运行这样的东西,我们得到第一个条目的正确的Jaccard相似度为0.2:

a <- length(intersect(source_vec, df_comp[[1,2]]))
b <- length(union(source_vec, df_comp[[1,2]]))
a/b
Run Code Online (Sandbox Code Playgroud)

text r dplyr mutate

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

在R包中显示编号列表

我无法在R包帮助中显示编号列表.

这是我在roxygen中所拥有的:

#' @return
#' Bunch of text
#' Bunch of text: 
#'  \enumerate {
#'    \item a
#'    \item b
#'    \item c
#' }
Run Code Online (Sandbox Code Playgroud)

这显示没有数字.保存文件后,单击Build & Reload in RStudio,然后运行devtools::document,然后devtools::load_all.当我在包上运行帮助时,我在控制台中收到以下消息:

Using development documentation for function name
Run Code Online (Sandbox Code Playgroud)

r roxygen2 r-package

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

图像不显示 RShiny

我在 Shiny 应用程序中显示图像时遇到问题。代码保存在桌面中,在那里我还有一个带有 logo.png 的 www 文件夹。我也将工作目录设置为桌面:

library(shiny)
library(png)

ui <- fluidPage(
  img(src="logo.png", height = 400, width = 400)
) #close fluidpage


server <- function(input, output, session){

} # closer server

shinyApp(ui=ui, server=server)
Run Code Online (Sandbox Code Playgroud)

这是输出的外观。
在此处输入图片说明

为了便于理解,我更喜欢将 server 和 ui 放在同一个文件中。也许这就是问题所在?

r shiny

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

如何在给定时间段内删除所有subreddit帖子

我有功能在2014-11-01和2015-10-31之间刮掉比特币subreddit中的所有帖子.

但是,我只能提取大约990个帖子,这些帖子可以追溯到10月25日.我不明白发生了什么.在参考https://github.com/reddit/reddit/wiki/API之后,我在每个提取之间包含了一个15秒的Sys.sleep ,但无济于事.

此外,我尝试从另一个subreddit(健身)刮,但它也返回约900个帖子.

require(jsonlite)
require(dplyr)

getAllPosts <- function() {
    url <- "https://www.reddit.com/r/bitcoin/search.json?q=timestamp%3A1414800000..1446335999&sort=new&restrict_sr=on&rank=title&syntax=cloudsearch&limit=100"
    extract <- fromJSON(url)
    posts <- extract$data$children$data %>% dplyr::select(name, author,   num_comments, created_utc,
                                             title, selftext)  
    after <- posts[nrow(posts),1]
    url.next <- paste0("https://www.reddit.com/r/bitcoin/search.json?q=timestamp%3A1414800000..1446335999&sort=new&restrict_sr=on&rank=title&syntax=cloudsearch&after=",after,"&limit=100")
    extract.next <- fromJSON(url.next)
    posts.next <- extract.next$data$children$data

    # execute while loop as long as there are any rows in the data frame
    while (!is.null(nrow(posts.next))) {
        posts.next <- posts.next %>% dplyr::select(name, author, num_comments, created_utc, 
                                    title, selftext)
        posts <- rbind(posts, posts.next)
        after <- posts[nrow(posts),1]
        url.next <- paste0("https://www.reddit.com/r/bitcoin/search.json?q=timestamp%3A1414800000..1446335999&sort=new&restrict_sr=on&rank=title&syntax=cloudsearch&after=",after,"&limit=100")
        Sys.sleep(15)
        extract …
Run Code Online (Sandbox Code Playgroud)

r reddit text-mining web-scraping

6
推荐指数
1
解决办法
2586
查看次数

浏览小插图中的错误:未找到小插图

我正在尝试查看我在本地计算机上重建包后创建的小插图。请注意,这与这篇文章的建议无关,因为我不是从 Github 克隆的。

我的小插图文件的小插图部分如下所示:

vignette: >
  %\VignetteIndexEntry{pack_name}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
Run Code Online (Sandbox Code Playgroud)

过程是:

  1. Ctr + Shift + K 编织小插图

  2. Ctr + Shift + B 重建包

  3. 进入 browseVignettes("package name")

获取错误: No vignettes found by browseVignettes

我也尝试更改knitr::markdownknitr::knitr,但没有帮助。

整个小插图顶部:

---
title: "Random title"
author: "Author"
date: "`r Sys.Date()`"
output: rmarkdown::html_vignette
vignette: >
  %\VignetteIndexEntry{vignette_name}
  %\VignetteEngine{knitr::rmarkdown}
  %\VignetteEncoding{UTF-8}
---
Run Code Online (Sandbox Code Playgroud)

r rstudio r-package

6
推荐指数
1
解决办法
1408
查看次数

如何在 RShiny 应用程序中使用自定义字体

我想在我的 Rshiny 应用程序中加入自定义字体。我有预感代码会放在tags$style 中,但没有实际的代码来包含它。

示例代码:

ui <- fluidPage(
        tags$style(  ),
        column(12,
                dataTableOutput("testtab")
              ) # close column
) #close fluidpage

server <- function(input, output, session) {
  output$testtab <- 
        DT::renderDataTable({
                               tab <- data.frame(a = 1:10, b = 11:20, c = 21:30)
                               dat.tab <- datatable(tab) %>% formatPercentage('a', 0) %>% 
                                                          formatCurrency(1:ncol(tab), '$')
                              return(dat.tab)
                            }) # close renderDataTable
} # close server

shinyApp(ui=ui, server=server)
Run Code Online (Sandbox Code Playgroud)

例如,假设我想使用网络上的任何自定义字体。

css fonts r font-family shiny

5
推荐指数
1
解决办法
4601
查看次数

标签 统计

r ×9

dplyr ×3

shiny ×3

purrr ×2

r-package ×2

apply ×1

css ×1

dt ×1

font-family ×1

fonts ×1

mutate ×1

reddit ×1

roxygen2 ×1

rstudio ×1

text ×1

text-mining ×1

web-scraping ×1