【发布时间】:2015-12-06 21:13:31
【问题描述】:
我有一个数据框
t = data.frame(c(5,5,5), c('a','b','c', 'a', 'b', 'd'), c(1,2,3), c(1,2,3))
和带有行名的向量
vector = table(t$V2)
如何将数据框中的第二个分类列替换为向量中的数字?
我做了一些 google foo 并尝试执行以下操作:
map = setNames(vector, rownames(vector))
to_replace = t$V2
to_replace[] = map[unlist(map)]
但我收到一个错误:
Warning message:
In `[<-.factor`(`*tmp*`, , value = c(146L, 146L, 27L, 82L, 110L, :
invalid factor level, NA generated
编辑
对不起各位,我没有说清楚我想做什么
t$V2 和向量的长度不同。基本上,带有行名的向量本身就是一个地图。我想将向量中的行名与 t$V2 中的值匹配,并将其替换为向量的值。向量本身是使用 table(t$V2) 函数生成的。
【问题讨论】:
-
大概你的意思是
names(vector)(不是rownames(vector))在第3行 -
我不确定,但我已经编辑了我的帖子以使其更清晰。
-
rownames(vector)对我和@42 都产生错误(见下文) -
如果我使用 table() 函数从数据框生成向量,rownames 对我有用。
-
是的,因为
vector没有存储为向量 - 因此与帖子的原始版本不同:)
标签: r