小编hed*_*ds1的帖子

检查字符串是否包含在列表中

我试图找到一种方法来检查列表是否包含本身包含特定字符串的元素。查找完全匹配很简单%in%

list1 <- list("a","b","c")
"a" %in% list1
[1] TRUE
Run Code Online (Sandbox Code Playgroud)

但它仅在元素相同时才有效,即如果元素仅包含字符串,则它不会返回 TRUE:

list2 <- list("a,b","c,d")
"a" %in% list2
[2] FALSE
Run Code Online (Sandbox Code Playgroud)

有没有办法为第二个示例生成 TRUE?提前致谢。

r

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

在 R Shiny 应用程序中将附加参数传递给 moduleServer:访问 updateTabsetPanel 的父环境

  • 从 Shiny 1.5.0 开始,我们鼓励使用moduleServer而不是callModule.
  • 但是,我们似乎无法将其他参数传递给moduleServer(与callModule)不同。
  • 这是一个问题,因为我想将父会话作为参数传递给moduleServer,以便我可以正确引用父会话,以便updateTabsetPanel在动态输出中正常工作renderUI

这篇文章演示了如何使用callModule将父会话传递到模块中,以便updateTabsetPanel可以引用父会话并相应地更新它。我在这里使用这种方法创建了一个最小的示例。有两个tabPanels,我们试图通过actionLink第一个中的 an 导航到第二个。该first_server模块是用 调用的callModule,我们可以将父会话参数作为附加参数传递,从而允许我们在 的updateTabsetPanel调用中引用它first_server。单击actionLinkthen 会将我们带到第二个模块 UI,如预期的那样:

library(shiny)

first_ui <- function(id) {
    ns <- NS(id)
    uiOutput(ns("goto_second_link_ui"))
}

second_ui <- function(id) {
    ns <- NS(id)
    p("It worked!")
}

first_server <- function(input, output, session, parent) {
    output$goto_second_link_ui <- renderUI({
        actionLink(session$ns("goto_second"), label …
Run Code Online (Sandbox Code Playgroud)

r shiny shinymodules

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

将变量传递到tidyr::pivot_wider 的names_glue 参数中

以下是一些我们使用两个名称进行更广泛旋转的愚蠢数据:

library(tidyr)

df <- data.frame(
    food = c('banana','banana','banana','banana','cheese','cheese','cheese','cheese'),
    binary = c(rep(c('yes','no'), 4)),
    car = c('toyota','subaru','mazda','skoda','toyota','subaru','mazda','skoda'),
    fun = c(2,4,3,6,2,4,2,3))

df %>%
    pivot_wider(
        id_cols = food,
        names_from = c(car, binary),
        values_from = fun)
Run Code Online (Sandbox Code Playgroud)

如果我们想更改新变量名称的格式,例如从toyota_yesyes_toyota,我们使用names_glue参数:

df %>%
    pivot_wider(
        id_cols = food,
        names_from = c(car, binary),
        names_glue = "{binary}_{car}",
        values_from = fun)
Run Code Online (Sandbox Code Playgroud)

我面临的问题是找到正确的语法将变量名称传递给参数names_glue。将变量传递给 很容易names_from,例如:

var1 <- 'car'
var2 <- 'binary'
df %>%
    pivot_wider(
        id_cols = food,
        names_from = c(var1, var2),
        values_from = fun)
Run Code Online (Sandbox Code Playgroud)

但我们不能直接这样做 …

r tidyr tidyeval r-glue

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

按值对列重新排序,同时保持组顺序

我的数据(复制如下)包含三个变量:(Tools分类变量)、Proficiency(值列)和Category(分组列)。我想根据Proficiency值的降序对列进行排序,同时保持Category组的分离,并且不使用facet_gridor facet_wrap(因为我正在使用coord_flip)。可重现的数据如下。为了排序,我根据因子指定Category的级别。ToolsCategory

library(tidyverse)

df1 <- structure(list(Tools = structure(c(1L, 8L, 9L, 5L, 6L, 10L, 2L, 
3L, 4L, 7L), .Label = c("Tool1", "Tool7", "Tool8", "Tool9", "Tool4", 
"Tool5", "Tool10", "Tool2", "Tool3", "Tool6"), class = "factor"), 
    Proficiency = c(3, 2, 5, 4, 3, 3, 3, 2, 2, 2), Category = structure(c(1L, 
    3L, 3L, 2L, 2L, 3L, 1L, 1L, 1L, 2L), .Label = c("Category1", 
    "Category2", "Category3"), …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 tidyverse

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

使用 r 中的plotly()隐藏条形图中的y轴线

我正在使用可视化水平条形图plot_ly()。不显示 x 轴的轴线,但显示 y 轴的轴线。我不确定如何隐藏条形图的轴线。

使用的数据框如下:

df <- data.frame("Grade" = c(9,10,11,12), "totalHours" = c(93,81,7,96),
                 "Count" = c(30,16,1,14), "average" = c(3.100,5.062,7.000,6.857))
Run Code Online (Sandbox Code Playgroud)

用于可视化的调用plot_ly()如下:

plot_ly(df, x=df$average, y=df$Grade, 
        type="bar", color=~Grade, orientation = 'h') %>%
  add_text(text=round(df$average), hoverinfo='none', textposition = 'auto', showlegend = FALSE,
           textfont=list(size=12, color="black")) %>%
  layout(yaxis = list(showgrid = FALSE),showlegend=FALSE) 
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?

r r-plotly

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

按每个数据帧中的行数对数据帧列表重新排序

假设我有三个数据帧my.list,每个数据帧都有不同的行数。我想重新排序此列表,以便列表的第一个元素是行数最多的数据框(在下面的示例中,d2)。

d1 <- data.frame(y1 = c(1, 2, 3),
                 y2 = c(4, 5, 6))
d2 <- data.frame(y1 = c(3, 2, 1, 3, 2),
                 y2 = c(6, 5, 4, 2, 5))
d3 <- data.frame(y1 = c(2, 1),
                 y2 = c(3, 2))

my.list <- list(d1, d2, d3)
Run Code Online (Sandbox Code Playgroud)

预期输出:

str(mylist[[1]]) ## 'data.frame':   5 obs. of  2 variables:
                     $ y1: num  3 2 1 3 2
                     $ y2: num  6 5 4 2 5
Run Code Online (Sandbox Code Playgroud)

原因是:我重复绘制多个数据帧列表中第一个元素的数据,并希望确保在调用 时绘制具有最多数据点的数据帧plot(my.list[[1]])

也许一个更干净的解决方案是在调用中plot搜索行数最多的元素/数据框并绘制它,但我不确定这有多容易。 …

r list dataframe

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

以ASP.NET MVC表形式动态添加行

我试图对ASP.NET MVC表下方的“添加”按钮进行编程,以动态追加空白行,然后单击“提交”按钮以将每一行保存到数据库中。

关于SO 有几个 类似的 问题,但我没有一个可以适用于此。我一直在尝试应用此示例,但“添加”按钮未附加新行。

模型:

public class TableForm
    {
        public int Id { get; set; }
        public List<TableFormData> TableFormDatas { get; set; }
    }

    public class TableFormData
    {
        public int Id { get; set; }
        public string ClientSampleID { get; set; }
        public string AdditionalComments { get; set; }
        public string AcidStables { get; set; }
Run Code Online (Sandbox Code Playgroud)

剃刀视图:

@model NewTestSix.Models.TableForm

@{
    ViewData["Title"] = "Create";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)

<fieldset>
    <legend>Sample submission</legend> …
Run Code Online (Sandbox Code Playgroud)

html c# asp.net asp.net-mvc jquery

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

updateTabsetPanel 在 Shiny 应用程序中的嵌套 tabsetPanel 之间导航

我希望能够使用 anactionLink导航到tabPanel嵌套tabsetPanels 中的 s。tabPanel如果我已经tabPanel选择了父级,我目前只能导航到特定的。这个命名法很快就会变得混乱,所以这里有一个嵌套的例子,tabPanels两个actionLinks 导航到两个 child tabPanels:

library(shiny)

ui <- {
    fluidPage(
        fluidRow(
            column(3,
                actionLink('subpanel_1a', 'Go to 1 A'),
                br(),
                actionLink('subpanel_1b', 'Go to 1 B')
            ),
            column(9,
                tabsetPanel(id = 'master_panel',
                    tabPanel('Primary panel 1',
                        tabsetPanel(id = 'primary_panel_1',
                            tabPanel('subpanel_1_a'),
                            tabPanel('subpanel_1_b')
                        )
                    ),
                    tabPanel('Primary panel 2',
                        tabsetPanel(id = 'primary_panel_2',
                            tabPanel('subpanel_2_a'),
                            tabPanel('subpanel_2_b')
                        )
                    )
                )
            )
        )
    )
}

server <- function(input, output, session) {
    observeEvent(input$subpanel_1a, {
        updateTabsetPanel(session, 'primary_panel_1', …
Run Code Online (Sandbox Code Playgroud)

r shiny

0
推荐指数
1
解决办法
190
查看次数