考虑以下列表
names = c("Bob", "Steve", "John", "Steve")
我想要一个为每个唯一名称返回一个整数的函数
int_names = [1,2,3,2]
和一本字典,然后我可以回到名字
dict_names = ["Bob", "Steve", "John"]
我可以看到如何使用for循环执行此操作,但我确信在R中必须有更有效的方法来执行此操作。我认为它可能与factor
有关但我似乎只是能够int_names
使用此功能并丢失dict_names
。
答案 0 :(得分:5)
您可以使用unique
和match
dict_names <- unique(names)
int_names <- match(names, dict_names)
或factor
指定levels
为&#39; dict_names`
int_names <- as.numeric(factor(names, levels=dict_names))
答案 1 :(得分:2)
如果我理解正确,你可以通过向原子向量添加名称来获得它。无需其他功能。
samplenames <- c("Bob", "Steve", "John","Steve")
thesenames <- unique(samplenames)
idx <- 1:length(thesenames)
names(idx) <- thesenames
idx["Steve"] # is 2
idx["John"] # is 3
和
thesenames[1] # is "Bob"
thesenames[2] # is "Steve"
答案 2 :(得分:1)
names <- c("Bob", "Steve", "John", "Steve")
names.factor <- as.factor(names)
names.integer <- as.integer(names.factor)
names.dict <- unique(cbind(names.factor,names))