我有点像
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
但是我失败了,不知道为什么。
答案 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