我希望有人能帮助我。
我有这个数据集,叫做“对话”:
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”的图。 我怎样才能做到这一点? 如果要使用在“单词”列中具有NA的另一个相似数据集,如何删除函数中的NA?
对不起,我的英语不好,我希望我清楚。 谢谢。
答案 0 :(得分:1)
您唯一需要更改的是在绘制之前应该对数据进行子集化。您可以为此使用基础data[data$word %in% word, ]
,或者如果您更喜欢dplyr
的{{1}}函数,则可以使用它。我在这里使用base,因为您的column和function参数都称为filter
,这会引起麻烦:
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"))