小编mni*_*ist的帖子

如何在浏览模式下禁用 RStudio 中的查看模式

有没有办法在调试功能时禁用 RStudio 中的查看模式? 在此输入图像描述

代码示例:

myfun <- function() {
  browser()
}
myfun()
Run Code Online (Sandbox Code Playgroud)

我知道它不开放源函数,这可能经常是不受欢迎的,因为可能不清楚我调试哪个函数等。

唯一的问题:可能还是不可能。在“全局选项”中搜索失败

ide debugging r rstudio

6
推荐指数
0
解决办法
557
查看次数

如何更新连接中的两个 data.tables

假设我想跟踪一个 data.table 中的哪些行已合并到另一个 data.table 中。有没有办法立即/合并时执行此操作?请参阅下面的示例以及我通常的做法。然而,这似乎效率很低。

例子

library(data.table)

# initial data
DT = data.table(x = c(1,1,1,2,2,1,1,2,2), 
                y = c(1,3,6))

# data to merge
DTx <- data.table(x = 1:3,
                  y = 1,
                  k = "X")

# regular update join
copy(DT)[DTx,
         on = .(x, y),
         k := i.k][]
#>    x y    k
#> 1: 1 1    X
#> 2: 1 3 <NA>
#> 3: 1 6 <NA>
#> 4: 2 1    X
#> 5: 2 3 <NA>
#> 6: 1 6 <NA>
#> …
Run Code Online (Sandbox Code Playgroud)

merge r data.table

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

R Shinydashboardplus flipbox - 如何删除图像

我想没有翻转盒的图像,我该怎么做?试过这个(也设置为NULL):

flipBox(
      id = 1, 
      main_img = "",
      header_img = "",
...
Run Code Online (Sandbox Code Playgroud)

但相反,它给了我这个奇怪的形象。 在此处输入图片说明

r shiny shinydashboard adminlte

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

将 .SD 与重命名的变量与 .SD 列的名称相结合

在我的代码中,我想以编程方式选择一些变量,并以硬编码方式选择和重命名其他一些变量。我知道我可以通过两个步骤来实现这一点setnames(),但我很好奇如何一步完成。

我想我非常接近它通过.SDcols. 但是,当我尝试.SD与重命名的列组合时,“.SDcols列”以“.SD.”为前缀。如何避免前缀?

library(data.table)
dt <- as.data.table(mtcars)[1:5]
dt
#>     mpg cyl disp  hp drat    wt  qsec vs am gear carb
#> 1: 21.0   6  160 110 3.90 2.620 16.46  0  1    4    4
#> 2: 21.0   6  160 110 3.90 2.875 17.02  0  1    4    4
#> 3: 22.8   4  108  93 3.85 2.320 18.61  1  1    4    1
#> 4: 21.4   6  258 110 3.08 3.215 19.44  1  0    3    1 …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

使用 pmap 迭代 tibble 的行

我有一个非常简单的 tibble,我想迭代它的行以使用 function 来应用函数pmap。我想我可能误解了pmap函数上的一些观点,但我大多很难选择参数。所以我想知道rowwise在这种情况下我是否应该使用函数pmap。不过我还没见过案例。另一个问题是选择要使用列表或select函数进行迭代的变量:

# Here is my tibble
# Imagine I would like to apply a `n_distinct` function with pmap on it every rows

df <-  tibble(id = c("01", "02", "03","04","05","06"),
                  A = c("Jan", "Mar", "Jan","Jan","Jan","Mar"),
                  B = c("Feb", "Mar", "Jan","Jan","Mar","Mar"),
                  C = c("Feb", "Mar", "Feb","Jan","Feb","Feb")
)

# It is perfectly achievable with `rowwise` and `mutate` and results in my desired output

df %>%
  rowwise() %>%
  mutate(overal = n_distinct(c_across(A:C))) …
Run Code Online (Sandbox Code Playgroud)

r dplyr purrr rowwise

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

如何从多个相似标记的列中减去彼此?

我有一个类似于以下内容的数据集:

在此输入图像描述

我想从星期一的相应值中减去所有星期二的值。因此,生成的第一列将为 Monday_1 - Tuesday_1,生成的第二列将为 Monday_2 - Tuesday_2,依此类推。

这是生成的数据框的样子。

在此输入图像描述

我想保持星期一列的名称相同并选择星期二列。我的真实数据集比这要宽得多,因此不必手动减去要容易得多。理想情况下我想要一个dplyr解决方案。

数据:

df <- structure(list(id = 1:7, Monday_1 = c(4L, 11L, 18L, 6L, 20L, 
5L, 12L), Monday_2 = c(20L, 3L, 20L, 12L, 1L, 10L, 15L), Monday_3 = c(14L, 
20L, 8L, 17L, 4L, 2L, 3L), Monday_4 = c(13L, 8L, 11L, 3L, 12L, 
14L, 17L), Tuesday_1 = c(1L, 14L, 7L, 16L, 2L, 6L, 12L), Tuesday_2 = c(10L, 
8L, 1L, 16L, 10L, 13L, 9L), Tuesday_3 = c(4L, 9L, 9L, 8L, 7L, 
9L, …
Run Code Online (Sandbox Code Playgroud)

r dataframe dplyr

5
推荐指数
2
解决办法
214
查看次数

在R中使用scale函数后如何获得中心和比例

这似乎是一个愚蠢的问题,但我已经在网上搜索过,但仍然没有找到任何足够的答复。

我的问题是:假设我们有一个矩阵M,那么我们使用该scale()函数,我们如何通过编写一行代码来提取每列的中心和比例尺(我知道我们可以看到中心和比例尺..),但是我的矩阵有很多列,手动完成很麻烦。

有任何想法吗?非常感谢!

r scale stat

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

如何重置reactiveValues?

重置单个无功值只需通过 即可完成reactiveVal(NULL)。然而,怎样才能彻底重置呢reactiveValues()

虚拟应用程序包含我的一些方法来保留新鲜和干净的反应值,但它们都没有真正做到我希望它们做的事情。另外,观察时似乎有一种奇怪的行为reactiveValuesTrigger除非单击按钮,否则它们在清洁后不会触发反应。当我检查他们的状态时,他们对我来说看起来很好。

library(shiny)
library(magrittr)

# UI ---------------------------------------------------------------------------
ui <- fluidPage(
    actionButton("create", "Create"),
    actionButton("reset", "Reset"),
    actionButton("trigger", "Trigger"),
    textOutput("out")
)

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

    vals <- reactiveValues()
    ids <- reactiveVal()
    display <- reactiveVal()

    # insert letter when clicked
    observeEvent(input$create, {
        id <- as.character(length(ids()))
        vals[[id]] <- sample(LETTERS, 1)
        ids(c(ids(), id))
    })

    observeEvent(input$reset, {
        # Options to reset reactive Values -------------------------------------
        vals <<- reactiveValues()
        # vals <- NULL
        for(i in …
Run Code Online (Sandbox Code Playgroud)

r shiny shiny-reactivity

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

python pandas dataframe 将一列设置为键,将行设置为值

我有一个 pandas 数据框,我想转换成字典。

email,account_no,cust_id
xyz,123,456
abc,789,654
nbc,345,907
Run Code Online (Sandbox Code Playgroud)

从 df 中,我希望电子邮件作为键,其他两列作为值。需要的输出如

{xyz:[123,456],
abc:[789,654],
nbc:[345,907]}
Run Code Online (Sandbox Code Playgroud)

有人可以让我知道如何实现这一目标吗?

python dataframe pandas

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

为什么没有为 Date 对象定义 cummin/cummax 以及临时数字转换是否存在危险?

cummin/cummax不能用于 Date 对象。这会触发Error in Math.Date(x): cummax not defined for "Date" objects.

我想知道这背后的原因是什么,因为我认为完全有可能确定日期的累积最小值/最大值。特别是因为最小/最大为日期对象定义的,所以这个限制似乎是任意的。

这里描述的解决方案是使用zoo::rollapplyr()或临时转换。

问题

  1. cummin/cummax未定义日期的原因是什么?
  2. 临时转制是否存在风险?我可以想到有关精度起源的问题,但我缺乏创造力,在这种情况下确实会出现问题。

代码

示例数据

x <- as.Date(c("2022-01-01", "2023-01-01", "1900-01-01", "2024-01-01"),
             origin = "1970-01-01")
Run Code Online (Sandbox Code Playgroud)

直接使用

# not working
cummax(x)
#> Error in Math.Date(x): cummax not defined for "Date" objects
cummin(x)
#> Error in Math.Date(x): cummin not defined for "Date" objects
Run Code Online (Sandbox Code Playgroud)

使用 {zoo}rollapplyr()

zoo::rollapplyr(x, FUN = min, width …
Run Code Online (Sandbox Code Playgroud)

r date

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

R按组过滤值填充新列

我想在 my 中创建新列dat,由满足条件的值填充。所以,我想保留valuewhere whereregime == "SA"并在 new column 中的整个组中填充此值vals.sa

这结合了filterand mutate,但我不确定它们的正确组合是什么?Filter只是保持行满足条件,但如何在组中的所有行上扩展此值?

我的数据:

dat <- data.frame(id = c(1,1,2,2,2,2,3,3),
                  regime = c("SA", "B", "SA", "B", "C", "F", "SA", "D"),
                  value = c(3,5,1,2,5,6,7,8))
Run Code Online (Sandbox Code Playgroud)

使用处理数据 dplyr

dat %>% 
  # group data by id
  group_by(id) %>%           
  # how to write this condition and get values instead or TRUE/FALSE?
  mutate(val.sa = regime == "SA") 
Run Code Online (Sandbox Code Playgroud)

与填充val.sa值对应的预期输出regime == "SA"

     id regime value …
Run Code Online (Sandbox Code Playgroud)

expand r filter dplyr

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