我想在R中有一个类似矩阵的数据结构,其中每一行都有不同的列名。从本质上讲,我几乎要一本字典列表。
请考虑以下代码:
x <- c(.5, .3, .2)
y <- c(.1, .6, .3)
names(x) <- c("foo", "bar", "foobar")
names(y) <- sample(names(x)) #same tokens, different order.
a <- rbind(x, y)
a
结果是矩阵a,其行都具有以矩阵的列名命名的条目。我希望每一行都有自己的名字。
//动机
稍微更具体地说,考虑一下您可能从Latent Dirichlet Allocation模型中获得的矩阵,其中每一行都是词汇中单词的多项概率向量。每行对应一个主题,因此如果您有K
个主题,则矩阵的维度为K * V
,其中V
是词汇量的大小。
可视化“主题”或特定多项分布的传统方法是报告每个主题中最可能的单词。我想打印一个K×5矩阵式数据结构,其中矩阵的每一行报告每个主题中最可能的前5个“令牌”及其相应的概率。
例如,考虑以下词汇和主题词概率矩阵:
require(MCMCpack) # for Dirichlet Distribution
numTopics <- 10
vocab <- c("coffee", "sunday", "bagel", "hangover", "regrets", "fun", "beer")
mtrx <- rdirichlet(numTopics, rep(1, length(vocab)))
colnames(mtrx) <- vocab
如果我们将矩阵的i-j
条目解释为主题j
中i
(在词汇表中)索引的标记的概率,那么我想排序按概率顺序排列mtrx
的每一行并附加相关标记的名称,以便标签仍然正确。
有人可以为此任务推荐合适的数据结构吗?