将属性映射到向量中的值

时间:2016-01-12 19:26:14

标签: r attributes

我正在使用数据框,其中每列具有不同的属性。是否可以将指定的属性映射到向量?对于上下文,您可能希望看到这种情况,其中您具有矢量和标签属性形式的原始数据和标记数据。

这是一个具有预期结果的例子:

foo = c(2,1,3,3,2,1)
attr(foo, "mylevels") = c(1,2,3)
attr(foo, "mylabels") = c("Red", "Blue", "Green")

## foo
## [1] 1 2 3 3 2 1
## attr(,"mylevels")
## [1] 1 2 3
## attr(,"mylabels")
## [1] "Red"   "Blue"  "Green"

## attributes(foo)
## $mylevels
## [1] 1 2 3

## $mylabels
## [1] "Red"   "Blue"  "Green"

目标如下:

foo[attr(foo, "mylabels")] #(which doesn't work)
"Blue" "Red" "Green" "Green" "Blue" "Red"

1 个答案:

答案 0 :(得分:1)

我们可以将'foo'转换为factor并指定levels

as.character(factor(foo, labels=c("Red", "Blue", "Green")))

或者使用'foo'作为attr

的数字索引
attr(foo, "mylabels")[foo]