小编Bri*_*per的帖子

过滤data.table中的重复/非唯一行

我有一张data.table约250万行的表.有两列.我想删除两列中重复的任何行.以前对于data.frame,我会这样做: data.table但这不适用于data.table.我试过df -> unique(df[,c('V1', 'V2')])但它似乎仍然只在data.table的键上操作而不是整行.

有什么建议?

干杯,戴维

>dt
      V1   V2
[1,]  A    B
[2,]  A    C
[3,]  A    D
[4,]  A    B
[5,]  B    A
[6,]  C    D
[7,]  C    D
[8,]  E    F
[9,]  G    G
[10,] A    B
Run Code Online (Sandbox Code Playgroud)

在上面的data.table中unique(df[,c(V1,V2), with=FALSE]),表键是哪里,只删除行4,7和10.

> dput(dt)
structure(list(V1 = c("B", "A", "A", "A", "A", "A", "C", "C", 
"E", "G"), V2 = c("A", "B", "B", "B", "C", "D", "D", "D", "F", 
"G")), .Names = c("V1", "V2"), …
Run Code Online (Sandbox Code Playgroud)

r duplicates data.table

68
推荐指数
2
解决办法
6万
查看次数

R小册子zoomControl选项

编辑:正如@Symbolix指出的那样,setMaxBounds确实与我正在寻找的不同.我真的只想完全禁用缩放,并删除控件.传单JavaScript API文档中描述的zoomControl选项似乎是我想要的,但我在R包中找不到该选项.


我正在使用传单在R中构建一个地图工具,我想将缩放限制到某个区域,但该setMaxBounds功能似乎没有任何效果.

library(dplyr)
library(leaflet)
library(tigris)

ohio_map <- leaflet(counties('OH', cb = TRUE)) %>%
  addProviderTiles("CartoDB.Positron") %>%
  addPolygons(weight = .3,
              color = "#229922",
              layerId = ~NAME) %>%
  setMaxBounds(lng1 = -84.800,
               lat1 = 42.000,
               lng2 = -80.500,
               lat2 = 38.400)
ohio_map
Run Code Online (Sandbox Code Playgroud)

这将显示地图的右侧区域,但不会阻止缩小.

完全删除缩放控件会更好,这样我就可以用更适合手头应用程序的东西替换导航.我找到了一个zoomControl选项,但是无法弄清楚在R中放置它以使其工作.

r leaflet

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

R Shiny模块带有conditionalPanel和reactives

我试图模块化一个复杂的Shiny应用程序,我conditionalPanel应该只在给定某个输入状态时出现.

在我将所有内容都模块化之前,输入和conditionalPanel都在ui.R,我可以使用以下内容引用输入:

conditionalPanel("input.select == 'Option one'", p('Option one is selected'))
Run Code Online (Sandbox Code Playgroud)

现在我已经模块化了,访问输入更加复杂.我认为以下是这样做的方法,但它并不是很有效.(这里我把东西组合成一个独立的脚本):

library(shiny)

## Module code for 'selectorUI' and 'selector'
selectorUI <- function(id) {
  ns <- NS(id)
  selectizeInput(inputId = ns('select'),
                 label = 'Make a choice:',
                 choices = c('Option one', 'Option two'))
}

selector <- function(input, output, session) {
  reactive(input$select)
}

## Main app
ui <- shinyUI(fluidPage(
  selectorUI('id1'),
  conditionalPanel(condition = "output.selected == 'Option one'", p('Option one is selected.'))
))

server <- shinyServer(function(input, output, session) {
  output$selected <- callModule(selector, …
Run Code Online (Sandbox Code Playgroud)

module r shiny

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

在段落中闪烁嵌套链接会产生不需要的空白

我正在构建一个Shiny应用程序,其中包含一些动态生成的HTML,其中包含句子中的链接.不幸的是,如果我使用这些tags函数来执行此操作,则无论我是否需要,每个元素都有一个空格.

例如,如果我想写

这是我最喜欢的链接!

有人可能会认为你可以这样做

p('This is my ', a(href = 'https://stackoverflow.com/', 'favorite link ever'), '!')
Run Code Online (Sandbox Code Playgroud)

但这导致每个元素都在一个单独的行上,HTML规范意味着每个元素之间会有一个空格.

<p>
  This is my 
  <a href="https://stackoverflow.com/">favorite link ever</a>
  !
</p>
Run Code Online (Sandbox Code Playgroud)

看起来像这样(注意感叹号前面的空格)

这是我最喜欢的链接!

我是否必须使用HTML(paste0(...))构建我的HTML,或者是否有一些技术来使用tags我缺少的函数?

谢谢..

html r hyperlink removing-whitespace shiny

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

禁用R Plotly单击事件的视觉响应

我正在用plot_ly散点图构建一个闪亮的应用程序.我正在使用一个SharedData对象(来自串扰包)在绘图和a datatable(来自DT)之间共享信息.

问题是当您单击绘图中的某个点时,它会使所有其他点的颜色变暗,并为所选点的图例添加一个条目,一旦发生这种情况,似乎没有办法撤消它.我想禁用这些视觉更改,但仍能检测到点击次数.

如果我只是在调用的数据参数中使用被动data.frame而不是SharedData对象plot_ly,但是event_data从图中没有足够的信息来选择行中的行,则不会发生此问题datatable.(点xy点坐标是浮点数字,因此坐标与数据匹配可能会产生意外结果.)

这是一个演示使用mtcars:

library(shiny)
library(DT)
library(plotly)
library(data.table)
library(crosstalk)

### UI function ---------
ui <- fluidPage(
  fluidRow(
    plotlyOutput('my_graph', height = '400px')
  ),
  fluidRow(
    dataTableOutput('my_table')
  )
)

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

### SharedData object ----
  filtered_data <- reactive({
    data.table(mtcars, keep.rownames = TRUE)
  }) 

  shared_data <- reactive({
    req(filtered_data())
    SharedData$new(filtered_data(), ~rn)
  })

### my_graph ---- …
Run Code Online (Sandbox Code Playgroud)

r shiny plotly dt

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

DataTables还应用列格式进行过滤

在列上创建datatablewith filter = 'top'并使用格式化功能时,格式不会应用于该列的过滤器控件.有没有办法格式化过滤器控件?

例如,如果我将浮点数设置为百分比格式,则过滤器中的滑块仍显示浮点数.

library(DT)

my_data <- mtcars
my_data$wt_pctile <- trunc(rank(my_data$wt)) / length(my_data$wt)

datatable(my_data,
          filter = 'top') %>%
  formatPercentage('wt_pctile')
Run Code Online (Sandbox Code Playgroud)

百分比过滤器范围未格式化为百分比

formatting r datatables shiny dt

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

R图形悬停标签文本对齐

更新10/3/2018:这不是R独有的.它之前已被报道,目前被标记为功能请求,在这里:https://github.com/plotly/plotly.js/issues/260


我正在为中的图形添加点的自定义文本.它似乎是将文本左对齐,居中对齐或右对齐,具体取决于文本框是分别显示在绘图点的右侧,中间还是左侧.无论盒子的位置如何,我都希望文本始终对齐.我已经能够设置字体样式,例如设置颜色和大小,但无法更改文本对齐方式.

这是一个MRE.我删除了传说,所以最右边的点被迫让他们的悬停框出现在点的左边.

plot_ly(iris,
        x = ~Sepal.Length,
        y = ~Sepal.Width,
        type = 'scatter',
        mode = 'markers',
        hoverinfo = 'text',
        hoverlabel = list(font = list(color = 'white')),
        text = ~paste0('Some rather long text',
                       '\nSepal.Length: ', Sepal.Length,
                       '\nSepal.Width: ', Sepal.Width)) %>%
  layout(showlegend = FALSE)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r scatter-plot hover plotly r-plotly

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

当颜色是离散的时,R曲线散点图标记尺寸似乎取决于颜色

更新:在此处作为错误报告打开:https://github.com/ropensci/plotly/issues/1133

我正在创建一个散点图plot_ly,其中颜色由因子变量指示,大小由数字表示.看起来在这种情况下,尺寸受到颜色的奇怪影响.

为了演示,这里我将同一个变量分配给xsize.在这种情况下,人们会期望最大的点位于最右边.此演示代码包含一些额外hoverinfo的调试功能.

library(plotly)

my_data <- mtcars
my_data$carb <- as.factor(mtcars$carb)

plot_ly(my_data,
        x = ~wt,
        y = ~mpg,
        size = ~wt,
        color = ~carb,
        type = 'scatter',
        mode = 'markers',
        hoverinfo = 'text',
        text = ~paste0('wt (x): ', wt, '\n',
                       'mpg (y): ', mpg, '\n',
                       'wt (size): ', wt, '\n',
                       'carb (color): ', carb, '\n'))
Run Code Online (Sandbox Code Playgroud)

而不是右边的最大点,看起来好像是在每个颜色组内缩放尺寸,这根本不是我真正想要的:

在此输入图像描述

我尝试从因素更改为字符,同样的事情发生,如果我更改为数字(使用因子级别映射到颜色),则图例变为连续,这是不好的.有任何想法吗?

r plotly

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

将 Sparkline htmlwidget 包含在 Shiny 应用程序的数据表单元格中,而无需诉诸(太多)JavaScript

我正在使用该sparkline包生成条形图,并将其放入datatableShiny 应用程序中的单元格中。我已经设法在独立中产生所需的输出datatable,但是当我将其放入 Shiny 应用程序中时,它不起作用。spk_add_deps()这可能与如何识别 htmlwidgets有关。我尝试过spk_add_deps()多次移动该函数并向其传递各种标识符,但没有任何效果。

我确实在这里发现了本质上相同的问题Render datatable with Sparklines in Shiny 但给定的解决方案 (1) 依赖于在回调函数中为迷你图编写 JavaScript 代码(违背了使用 R 函数的目的sparkline())和 (2) 似乎如果迷你图在查看器中呈现,那么我们离让它们在 Shiny 应用程序中呈现而无需编写所有 JavaScript 就不远了。

这是演示:

# Preliminary, load packages and build a demo table with the sparkline code merged in
library(shiny)
library(DT)
library(data.table)
library(sparkline)

## Create demo data sets
my_mtcars <- data.table(mtcars, keep.rownames = TRUE)
names(my_mtcars)[1] <- 'car_id'

set.seed(0)
data_for_sparklines <- data.table(car_id = rep(my_mtcars$car_id, 5),
                                  category = …
Run Code Online (Sandbox Code Playgroud)

r sparklines shiny dt htmlwidgets

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

在 Shiny 应用程序中处理图像映射点击

我正在构建一个闪亮的应用程序,其中的selectInput功能既作为传统的 HTML 选择下拉列表又作为可点击的图像地图呈现。我当前的策略是将图像地图多边形链接回应用程序并添加 URL 参数,解析该 URL,然后更新选择。当然,这每次都会重置应用程序,这还可以,但不是很好,而且 UI 闪烁也不是很优雅。

我的问题是:

  • 有没有更好的方法来捕获图像点击并更新输入?
  • 如果我继续我的解决方案,我是否可以延迟渲染,selectInput以便在解析 URL 之前不会显示它,以便在闪烁到参数化选择之前暂时不显示默认选择?

这是一个演示:

截屏

library(shiny)
ui <- fluidPage(
   sidebarLayout(
      sidebarPanel(
         selectInput("letter_select",
                     "Pick a letter:",
                     choices = c('A' = 1, 'B' = 2, 'C' = 3, 'D' = 4))
      ),
      mainPanel(
         h3('Or click a letter'),
         img(src = 'testpattern.png', usemap = '#image-map'),
         HTML('
<map name="image-map">
<area target="_self" title="A" href="?letter=1" coords=0,0,50,0,50,50,0,50" shape="poly">
<area target="_self" title="B" href="?letter=2" coords=50,0,100,0,100,50,50,50" shape="poly">
<area target="_self" title="C" href="?letter=3" coords=0,50,50,50,50,100,0,100" shape="poly">
<area target="_self" title="D" href="?letter=4" coords=50,50,100,50,100,100,50,100" …
Run Code Online (Sandbox Code Playgroud)

r imagemap shiny

3
推荐指数
1
解决办法
1115
查看次数