r - 使用虚拟数据框设置文本数据的绘图区域
问题描述
我有大量的数据集,其中的话语以它们包含的单词数量来区分(4 个单词的话语、5 个单词的话语等)。每个数据集由恰好 1,000 个话语标记的样本组成,并存储在具有 3 个变量的数据框中:单词(“word”)、它们的语法标签(“c5”)和它们在轮换中的位置(“slot” ):
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
尽管行和插槽之间不匹配,有没有办法为绘图设置虚拟数据框?
解决方案
在选择虚拟数据集的大小时,您必须更加慎重。一千不是七的倍数,这就是您收到错误的原因。看看下面的例子。在此示例中,在创建数据集之前,确定了第一个向量应该是多大。
# Settings
slotSize <- 7
desiredRows <- 1000
# Compute nr of repeats
nrRepeats <- round(desiredRows / slotSize, 0)
totalRows <- nrRepeats * slotSize
# Create dummy data
dummy <-data.frame(rows = 1:totalRows, slots = 1:slotSize)
head(dummy); tail(dummy)
这也可以在一行中完成,尽管它可能更难阅读。
# In one line
dummy <-data.frame(rows = c(1:(round((1000/slotSize),0) * slotSize)), slots = 1:slotSize)
希望这将使您更接近解决方案。
推荐阅读
- cloudflare - Cloudflare cookie 被所有子域重用
- templates - 使用 PC-Lint Plus 弃用类模板
- python - 将 dict 写入 CSV 后,如何恢复它以检索原始 dict
- c - 从 Keil 中的 uint8_t 数组获取 uint16_t 值
- c# - 将文本/纯多行键=值 http 响应映射到 json 和/或 c# 对象
- python - 将列表中的值分组并将它们存储为子列表
- python - 如何在python中以功能方式将分层数据结构中的字符串转换为dict?
- firebase - 无法从实时数据库中保存值
- typescript - Chalk 不会在 Deno 中运行
- php - Laravel 与 mailcatcher 抛出异常无法分配请求的地址