我有一个与使用LDA的主题相关联的数据框terms
:
Topic 1 Topic 2 Topic 3
foo1 bar1 cow1
foo2 bar2 cow2
foo3 bar3 cow3
在另一个数据框items
中,我有一个与主题相关联的项目列表:
ItemID Topic
item1 1
item2 1
item3 2
item4 3
我想创建一个新列items$terms
,它返回与该主题相关的术语:
ItemID Topic terms
item1 1 foo1 foo2 foo3
item2 1 foo1 foo2 foo3
item3 2 bar1 bar2 bar3
item4 3 cow1 cow2 cow3
我试过了:
items$terms <- sapply(items$Topic,paste(terms[,x],collapse = " "))
# For each item, find the topic, and return the pasted terms from topicterms
但我收到错误:
[.data.frame(topicterms,x)中的错误:找不到对象'x'。
你能告诉我我做错了吗?
答案 0 :(得分:1)
你只是忘了sapply
采用函数而不是表达式作为参数:
items$terms <- sapply(items$Topic,function(x) paste(topicterms[,x],collapse = " "))
但是,此公式要求topicterms
中的列名称与items
中的主题值完全匹配,而现在它们不是 - 一个是数字,一个是字符串{{1附加数字。更改列名可能最简单:
"Topic "