繁体   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