У меня есть большое количество наборов данных с высказываниями, различающимися по количеству слов, которые они содержат (высказывания из 4 слов, высказывания из 5 слов и т. Д.). Каждый набор данных состоит из выборки ровно 1000 токенов высказывания и хранится во фрейме данных с 3 переменными: слова («слово»), их грамматические теги («с5») и их положение в повороте («слот»). ):
df <- data.frame(word, c5, slot)
То, что я хотел бы сделать, - это нанести на график разброс определенных слов в их высказываниях в точечном графике, используя функцию text () и цветовые кодировки, например, черный для междометий и серый для любого другого типа слов.
Чтобы настроить область построения, я создаю фиктивную рамку с двумя переменными: строками (для слов в высказывании) и слотами (для позиции каждого слова в высказывании). Например, для выборки из 10 слов:
dummy <- data.frame(rows = 1:1000, slots = 1:10)
Затем я установил область построения для этого фрейма данных, таким образом:
plot(dummy$rows ~ dummy$slots, type="n", axes =F)
axis(1, at=seq(1:10), labels=c("w1", "w2", "w3", "w4", "w5", "w6", "w7", "w8", "w9", "w10"))
и заполните слоты данными в приведенном выше кадре данных "df":
for(i in unique(df$slot)){
text(i, 1:1000, "_____", cex=1.45,
col = ifelse(df[df$slot==i,]$c5=="ITJ", "black", "grey"))
}
Это прекрасно работает, если строки в фиктивном фрейме данных кратны слотам. Проблема начинается, когда их нет, например, в случае высказываний из 7 слов, я получаю эту ошибку:
dummy <-data.frame(rows = 1:1000, slots = 1:7)
Error in data.frame(rows = 1:1000, slots = 1:7) :
arguments imply differing number of rows: 1000, 7
Есть ли способ установить фиктивный фрейм данных для графика, несмотря на несоответствие между строками и слотами?