他のすべての列にあるすべての単語を収集してフォーマットする新しい列をティブルに作成しようとしています。可能であれば、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 は引数として 1 行を取る必要がありますが、rowwise() を使用しようとすると、tibble 全体を関数に渡しているように見えます (これは、印刷関数を myFunc に追加することで確認できます)。
1 行だけを渡してこれを繰り返し実行し、すべての行に関数を適用するにはどうすればよいですか? これは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 = ' ')
}