小编pan*_*man的帖子

R:分配数据框列的变量标签

我正在努力使用data.frame列的变量标签.假设我有以下数据框(更大的数据框的一部分):

data <- data.frame(age = c(21, 30, 25, 41, 29, 33), sex = factor(c(1, 2, 1, 2, 1, 2), labels = c("Female", "Male")))
#
Run Code Online (Sandbox Code Playgroud)

我还有一个带有该数据框变量标签的命名向量:

var.labels <- c(age = "Age in Years", sex = "Sex of the participant")
Run Code Online (Sandbox Code Playgroud)

我想在分配变量标签var.labels在数据帧中的列data使用功能labelHmisc包.我可以像这样一个接一个地做,然后检查结果:

> label(data[["age"]]) <- "Age in years"
> label(data[["sex"]]) <- "Sex of the participant"
> label(data)
                 age                      sex
      "Age in years" "Sex of the participant"
Run Code Online (Sandbox Code Playgroud)

变量标签被指定为列的属性:

> attr(data[["age"]], "label")
[1] "Age in years"
> …
Run Code Online (Sandbox Code Playgroud)

r labels dataframe assign hmisc

20
推荐指数
3
解决办法
5万
查看次数

R:从字符串的开头删除前导零

我首先提到了这个问题,但答案对我的情况没有帮助.

我有一个列表,其中每个组件包含以数字开头的元素,后跟单词(字符).元素开头的一些数字有一个或多个前导零.这是列表的一小部分:

x <- list(el1 = c("0010 First",
                  "0200 Second",
                  "0300 Third",
                  "4000 Fourth",
                  "0 Undefined",
                  "60838 Random",
                  "903200 Haphazard"),
          el2 = c("0100 Hundredth",
                  "0200 Two hundredth",
                  "0300 Three hundredth",
                  "0040 Fortieth",
                  "0 Undefined",
                  "949848 Random",
                  "202626 Haphazard"),
          el3 = c("0010 First",
                  "0200 Second",
                  "0300 Third",
                  "0100 Hundredth",
                  "0200 Two hundredth",
                  "0300 Three hundredth",
                  "0 Undefined",
                  "60838 Random",
                  "20200 Haphazard"))
Run Code Online (Sandbox Code Playgroud)

我想要实现的是删除它们可用的前导零,并且在开头0 Undefined加上所有其他不以前导零开头的元素仍然具有单个零.也就是说,将列表如下:

x <- list(el1 = c("10 First",
                  "200 Second",
                  "300 Third",
                  "4000 Fourth",
                  "0 Undefined", …
Run Code Online (Sandbox Code Playgroud)

regex r list character leading-zero

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

两个列表中向量之间的元素部分交集

我有一个这样的列表:

mylist <- list(PP = c("PP 1", "OMITTED"),
           IN01 = c("DID NOT PARTICIPATE", "PARTICIPATED", "OMITTED"),                     
           RD1 = c("YES", "NO", "NOT REACHED", "INVALID", "OMITTED"),
           RD2 = c("YES", "NO", "NOT REACHED", "NOT AN OPTION", "OMITTED"),
           LOS = c("LESS THAN 3", "3 TO 100", "100 TO 500", "MORE THAN 500", "LOGICALLY NOT APPLICABLE", "OMITTED"),
           COM = c("BAN", "SBAN", "RAL"), 
           VR1 = c("WITHIN 30", "WITHIN 200", "NOT AVAILABLE", "OMITTED"),                         
           INF = c("A LOT", "SOME", "LITTLE OR NO", "NOT APPLICABLE", "OMITTED"),               
           IST = c("FULL-TIME", "PART-TIME", …
Run Code Online (Sandbox Code Playgroud)

intersection r list match

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

rmarkdown将kable与data.tables列表一起使用会丢失表格式

我有一个rmarkdown要使用data.tables 列表并将其包含在PDF / HTML / MS Word文档中的文档。列表的每个组成部分都包含一个data.table

我想要达到的目的是使用kable带有标题的文档添加所有表。

当我data.table像这样一一索引

```{r}
 kable(list.of.dts[[1]], caption = paste0("Frequency table for the '", colnames(list.of.dts[[1]])[2], "' variable."))
```
Run Code Online (Sandbox Code Playgroud)

一切都很好,并且表格的格式正确,如下面的屏幕截图所示。

在此处输入图片说明

但是,如果我尝试使用lapplykable所有data.tables在列表中这样

```{r}
lapply(X = list.of.dts, FUN = function(i) {
  kable(x = i, caption = paste0("Frequency table for the '", colnames(i)[2], "' variable."))
})
```
Run Code Online (Sandbox Code Playgroud)

处理所有内容data.tables并将它们包含在文档中,我得到了相当基本的粗略输出,如下面的屏幕截图所示。

在此处输入图片说明

此外,如果我只是将data.tables 的列表传递给kable这样

```{r}
kable(list.of.dts)
```
Run Code Online (Sandbox Code Playgroud)

我得到了所有具有更好格式的表(尽管不是第一个示例中的表),但是彼此堆叠,位于页面中间,并且不能添加标题:

在此处输入图片说明

有谁知道为什么会这样,我该如何克服这个问题?

编辑1:

我已经放入result="asis" …

r tabular r-markdown kable

5
推荐指数
0
解决办法
2200
查看次数

以编程方式启动 R Shiny 应用程序作为后台作业

Dean Attali 提供了一个精彩的示例,介绍如何使用关闭按钮优雅地退出 Shiny 应用程序,该按钮既关闭浏览器窗口又结束 Shiny 会话。考虑以下示例(Dean 原始代码的修改):

ui.r

library(shiny)
library(shinyjs)

jscode <- "shinyjs.closeWindow = function() { window.close(); }"

ui <- fluidPage(
  useShinyjs(),
  extendShinyjs(text = jscode, functions = c("closeWindow")),
  htmlOutput(outputId = "exitHeading"),
  actionButton(inputId = "closeGUI", label = "Exit")
)
Run Code Online (Sandbox Code Playgroud)

server.r

library(shiny)
library(shinyjs)

server <- function(input, output, session) {
  output$exitHeading <- renderText("Press the button below to exit the app")
  observeEvent(input$closeGUI, {
    js$closeWindow()
    stopApp()
  })
}
Run Code Online (Sandbox Code Playgroud)

并运行应用程序:

runApp(appDir = "/tmp")
Run Code Online (Sandbox Code Playgroud)

我的问题是关于如何以编程方式启动 Shiny 应用程序作为后台作业,以便在应用程序仍在运行时,RStudio 控制台可以免费进一步使用(甚至并行启动第二个 …

r background-process shiny

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

R Shiny将来自多个动态生成的textAreaInput字段的用户输入存储在服务器部分的对象中

新来shiny现在有了这个挣扎超过两天。我创建了一个应用程序,用户在其中加载.csv数据文件,并选择一个或多个变量,这些变量的名称在应用程序中显示为复选框。选中复选框后,将在其下方显示一个具有相同名称的新复选框,当单击该复选框时,其textAreaInput旁边也会出现一个,用户可以在其中添加构成目标变量的变量名称作为比例。这是应用程序的过度简化版本:

library(shiny)

ui <- fluidPage(

  mainPanel(
    fileInput(inputId = "file", label = "Choose File", multiple = TRUE, accept = ".csv"),
    uiOutput(outputId = "varCheckBoxesIndivScores"),

    column(width = 3,
           uiOutput(outputId = "selectedScoresCheckBoxes")),

    conditionalPanel(condition = "input.selectedScoresCheckBoxes",
                     column(width = 6,
                            uiOutput(outputId = "variablesConstitutingScale"))
    )
  )
)

server = function(input, output, session) {

  df <- reactive({
    if(is.null(input$file)) {
      return(NULL)
    } else {
      tbl <- fread(input$file$datapath, stringsAsFactors = TRUE)
      return(tbl)
    }
  })

  output$varCheckBoxesIndivScores <- renderUI({
    if(is.null(df())) {
      return(NULL)
    } else if(!is.null(df())) { …
Run Code Online (Sandbox Code Playgroud)

textarea user-input r dynamic shiny

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