如何将mutate()与字符串列一起使用?

时间:2020-11-03 16:32:04

标签: r dplyr

我有点像

data <- tibble(string = c("A", "B", "C"), number = c(1,2,3))

然后我定义了一个函数

foo <- function(string, number){
  result <- paste(replicate(number, string), collapse = "")
  return(result)
}

,这样foo("A", 3) = "AAA"。现在,我要做的是添加一个新列new,其中foo(s, n)s是{{1 }}和n用于同一行。我试图通过做类似的事情来做到这一点

string

但是我失败了,不知道为什么。

2 个答案:

答案 0 :(得分:1)

尝试IF statement,因此为每一行计算rowwise

foo

输出:

data %>%
  rowwise() %>%
  mutate(new = foo(string, number))

问题可能是# A tibble: 3 x 3 # Rowwise: string number new <chr> <dbl> <chr> 1 A 1 A 2 B 2 BB 3 C 3 CCC 无法处理向量。就像在这个例子中一样。 因此,需要按行进行处理。

foo

答案 1 :(得分:0)

在这种情况下,无需定义新功能。这将起作用-

data %>% mutate(new = strrep(string, number))

# A tibble: 3 x 3
  string number new  
  <chr>   <dbl> <chr>
1 A           1 A    
2 B           2 BB   
3 C           3 CCC