如何在 R 中访问实际的内部因素查找哈希表

How to access actual internal factor lookup hashtable in R

亲爱的 Whosebug 社区,

我找遍了所有地方,但找不到这个问题的答案。我正在尝试访问将字符串向量更改为因子向量时 R 使用的因子查找 table。我不是要将字符串转换为因子,而是获取因子变量的基础查找 table 并将其存储为散列 table 以供在其他地方使用。

我遇到这个问题是因为我想在不同长度向量的列表上使用这个因子查找 table,将它们从字符串转换为数字。

即,我有一个要转换为数字的项目集列表,但列表中的每个集都有不同数量的项目。

到目前为止,我已经将向量列表转换为向量

vec <- unlist(list)
vec <- factor(vec)

现在我想用因子查找 table 对原始列表进行查找,它必须是潜在的 vec,但我似乎找不到它。

我认为您要么想要将因子元素映射到因子水平元素的索引,如:

vec <- c('a','b','c','b','a')
f <- factor(vec)
f
#> [1] a b c b a
#> Levels: a b c

indx <- (f)
attributes(indx) <- NULL
indx
#> [1] 1 2 3 2 1

或者您希望在内部使用散列 table 来创建因子变量。不幸的是,在创建因子的过程中创建的任何散列 table 将由函数 uniquematch 创建,它们是内部函数,因此您将无法访问任何内容这些函数创建(当然 return 值除外)。如果您想要一个散列 table,以便可以使用它来索引与现有因子具有相同级别的字符向量,只需创建一个散列 table,如:

library(hash)
.levels <- levels(f)
h <- hash(keys = .levels,values = seq_along(.levels))
newVec <- sample(.levels,10,replace=T)
newVec
#> [1] "a" "b" "a" "a" "a" "c" "c" "b" "c" "a"
values(h,keys = newVec)
#> a b a a a c c b c a 
#> 1 2 1 1 1 3 3 2 3 1