我正在尝试在我的 tibble 中创建一个新列,该列收集并格式化在所有其他列中找到的所有单词。如果可能的话,我想使用 dplyr 来做到这一点。原始数据框:
df <- read.table(text = " columnA columnB
1 A Z
2 B Y
3 C X
4 D W
5 E V
6 F U " )
作为一个简化的例子,我希望做一些类似的事情:
df %>%
rowwise() %>%
mutate(newColumn = myFunc(.))
并让输出看起来像这样:
columnA columnB newColumn
1 A Z AZ
2 B Y BY
3 C X CX
4 D W DW
5 E V EV
6 F U FU
当我在我的代码中尝试这个时,输出如下所示:
columnA columnB newColumn
1 A Z ABCDEF
2 B Y ABCDEF
3 C X ABCDEF
4 D W ABCDEF
5 E V ABCDEF
6 F U ABCDEF
myFunc 应该将一行作为参数,但是当我尝试使用 rowwise() 时,我似乎将整个 tibble 传递到函数中(我可以通过在 myFunc 中添加打印函数来看到这一点)。
我怎样才能只传递一行并迭代地执行此操作,以便将函数应用于每一行?这可以用 dplyr 完成吗?
编辑:
为了我的问题,示例中的 myFunc 进行了简化。实际功能如下所示:
get_chr_vector <- function(row) {
row <- row[,2:ncol(row)] # I need to skip the first row
words <- str_c(row, collapse = ' ')
words <- str_to_upper(words)
words <- unlist(str_split(words, ' '))
words <- words[words != '']
words <- words[!nchar(words) <= 2]
words <- removeWords(words, stopwords_list) # from the tm library
words <- paste(words, sep = ' ', collapse = ' ')
}