1

場合によっては、データフレームの複数の行にまたがる文全体の一部を含むデータフレームがあります。

たとえば、head(mydataframe)返品

#  1 Do you have any idea what
#  2  they were arguing about?
#  3          Do--Do you speak
#  4                  English?
#  5                     yeah.
#  6            No, I'm sorry.

文が次のいずれかで終了できると仮定すると、

「。」また "?" また "!" また "..."

以下を出力できるRライブラリ関数はありますか?

#  1 Do you have any idea what they were arguing about?
#  2          Do--Do you speak English?
#  3                     yeah.
#  4            No, I'm sorry.
4

2 に答える 2

4

これは、次で終わるすべての文で機能するはずです:. ... ?または!

x <- paste0(foo$txt, collapse = " ")
trimws(unlist(strsplit(x, "(?<=[?.!|])(?=\\s)", perl=TRUE)))

後読みのポインタについては @AvinashRaj の功績

これにより、次のことが得られます。

#[1] "Do you have any idea what they were arguing about?"
#[2] "Do--Do you speak English?"                         
#[3] "yeah..."                                           
#[4] "No, I'm sorry." 

データ

おもちゃのデータセットを変更して、文字列がで終わるケースを含めました...(OPの要求に従って)

foo <- data.frame(num = 1:6,
                  txt = c("Do you have any idea what", "they were arguing about?",
                          "Do--Do you speak", "English?", "yeah...", "No, I'm sorry."), 
                  stringsAsFactors = FALSE)
于 2015-11-15T12:34:11.837 に答える
3

これが私が得たものです。これを行うためのより良い方法があると確信しています。ここでは基本関数を使用しました。というサンプル データ フレームを作成しましたfoo。まず、すべてのテキストを含む文字列を作成しましたtxttoString()が追加,されるので、最初にそれらを削除しましたgsub()。次に、2 番目の空白 (2 つ以上のスペース) を処理しましたgsub()。次に、指定した区切り記号で文字列を分割します。この投稿のTyler Rinker の功績により、区切り文字を .xml に残すことができましたstrsplit()。最後の作業は、文頭の空白を削除することでした。次に、リストを非公開にします。

EDIT Steven Beaupré が私のコードを修正しました。それが行く方法です!

foo <- data.frame(num = 1:6,
                  txt = c("Do you have any idea what", "they were arguing about?",
                          "Do--Do you speak", "English?", "yeah.", "No, I'm sorry."), 
                  stringsAsFactors = FALSE)

library(magrittr)

toString(foo$txt) %>%
gsub(pattern = ",", replacement = "", x = .) %>%
strsplit(x = ., split = "(?<=[?.!])", perl = TRUE) %>%
lapply(., function(x) 
            {gsub(pattern = "^ ", replacement = "", x = x)
      }) %>%
unlist

#[1] "Do you have any idea what they were arguing about?"
#[2] "Do--Do you speak English?"                         
#[3] "yeah."                                             
#[4] "No I'm sorry." 
于 2015-11-15T12:16:53.307 に答える