1

他のすべての列にあるすべての単語を収集してフォーマットする新しい列をティブルに作成しようとしています。可能であれば、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 = ' ')
}
4

2 に答える 2

0

これはうまくいくはずです

   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 %>%
  mutate(mutate_Func = paste0(columnA,columnB))

   columnA columnB mutate_Func
1       A       Z          AZ
2       B       Y          BY
3       C       X          CX
4       D       W          DW
5       E       V          EV
6       F       U          FU
于 2017-10-20T13:46:39.497 に答える