簡體   English   中英

創建一個 R 函數,該函數選擇向量的一個字符元素作為輸入參數

[英]Create an R function which select a character element of a vector as input argument

我希望有一個人可以幫助我。

我有這個數據集,叫做“對話”:

turn  word     freq
 1     A   0.18181818
 1     B   0.13636364
 1     C   0.31818182
 1     D   0.13636364
 1     F   0.13636364
 1     G   0.09090909
 2     A   0.25000000
 2     B   0.10000000
 2     C   0.25000000
 2     D   0.15000000
 2     F   0.10000000
 2     G   0.15000000

我想創建一個函數來繪制單個詞頻的變化。 該函數必須有一個字符串參數,以便使用該函數的任何人都只能繪制他想要的單詞(“A”、“B”、“C”...)。

我嘗試編寫函數,但使用以下代碼同時繪制所有單詞:

plot_word_frq <- function(x){

  df_x <- data.frame(dialogue)


  ggplot(dialogue,
         aes(x = turn, y = p, colour = word)) +
    ggtitle("Change of Word Frequency") +
    theme(plot.title = element_text(hjust = 0.5)) +
    theme_bw() +
    geom_point() +
    labs(y = "Percentage of words") +
    facet_wrap(~ word) +
    scale_x_continuous(limits = c(0.5, 2.5)) +
    scale_y_continuous(label = scales::percent) + 
    theme(legend.position = "none")    
  }



plot_word_frq(dialogue)

但我想要的是在參數中我可以選擇一個單詞來繪制。 例如,該函數應該以這種方式工作:

plot_word_frq(data=dialogue, word="B")

它會自動只返回“B”這個詞的情節。 我怎樣才能做到這一點? 如果我想使用另一個在“word”列中包含 NA 的類似數據集,我該如何刪除函數中的 NA?

對不起,我的英語不好,我希望我說清楚。 謝謝你。

您唯一需要更改的是在繪圖之前應該對數據進行子集化。 您可以為此使用基礎data[data$word %in% word, ] ,或者如果您更喜歡dplyrfilter功能。 我在這里使用 base 是因為你的列和函數參數都被稱為word這會導致問題:

plot_word_frq <- function(data, word) {

  ggplot(data[data$word %in% word, ],
         aes(x = turn, y = freq, colour = word)) +
    ggtitle("Change of Word Frequency") +
    theme(plot.title = element_text(hjust = 0.5)) +
    theme_bw() +
    geom_point() +
    labs(y = "Percentage of words") +
    facet_wrap(~ word) +
    scale_x_continuous(limits = c(0.5, 2.5)) +
    scale_y_continuous(label = scales::percent) + 
    theme(legend.position = "none")  
}


plot_word_frq(data = dialogue, word = "B")

plot_word_frq(data = dialogue, word = c("B", "G"))

為了區分情節,您可以使用標題。 只需將標題行替換為ggtitle(paste("Change of Word Frequency (words: ", toString(word), ")")) +

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM