在R中的重复函数中编写具有可变时间的函数

Posted

技术标签:

【中文标题】在R中的重复函数中编写具有可变时间的函数【英文标题】:Writing a function with variable times in the repeat function in R 【发布时间】:2022-01-19 21:43:06 【问题描述】:

我希望有人可以帮助我编写一个更有说服力的函数来执行以下操作: 假设我有一个大致如下所示的数据框:

library(tidyverse)
d = 
  tibble(
  ID = as.factor(c("1", "2")), 
  dialect_TCU = as.numeric(c(8, 12)), 
  standard_TCU = as.numeric(c(12, 9)), 
  mixture_TCU = as.numeric(c(14, 5))
)

在我的一生中,我无法弄清楚如何编写一个执行以下操作的函数:

    重复每个标题为每个参与者列出的次数,并且 重复参与者 ID 标头的重复次数。

结束数据框应如下所示:

d2 = 
  tibble(
    ID = c(rep("1", 34), 
           rep("2", 26)),
    successfulRow = c(rep("dialect_TCU", 8), 
                      rep("standard_TCU", 12), 
                      rep("mixture_TCU", 14), 
                      rep("dialect_TCU", 12), 
                      rep("standard_TCU", 9), 
                      rep("mixture_TCU", 5))
  )

如果有人可以帮助我编写一个执行此操作的函数(这可能真的很简单,而且我只是在想整个事情......),那将非常有帮助! 谢谢!

【问题讨论】:

【参考方案1】:

我们可以使用pivot_longer 重塑为“长”,然后使用uncount 复制行

library(dplyr)
library(tidyr)
d %>% 
  pivot_longer(cols = -ID, names_to = "successfulRow") %>%
  uncount(value)

-输出

# A tibble: 60 × 2
   ID    successfulRow
   <fct> <chr>        
 1 1     dialect_TCU  
 2 1     dialect_TCU  
 3 1     dialect_TCU  
 4 1     dialect_TCU  
 5 1     dialect_TCU  
 6 1     dialect_TCU  
 7 1     dialect_TCU  
 8 1     dialect_TCU  
 9 1     standard_TCU 
10 1     standard_TCU 
# … with 50 more rows

【讨论】:

以上是关于在R中的重复函数中编写具有可变时间的函数的主要内容,如果未能解决你的问题,请参考以下文章

函数指针中的可变参数数量[重复]

如何在R语言中查找具有连续字母的字符串中的单词

没有类的重载[重复]

具有相同名称的纯虚函数的不同实现[重复]

显示R中函数的源代码[重复]

处理 R 中的重复性任务