0

我想用另一个数据框中的各自值替换列表(An)中的所有值。

String<-c("a","b","c")
Strn<-1:length(String)                            
LK<-data.frame(String,Strn)
An<-as.vector(permn(length(Strn))) 

我在上面创建了一个只有 3 个元素的简单示例,但我的数据中有一个更大、更多样化的列表(因此简单的 ifelse 重新编码会太长)。所以在这里我希望在整个列表中将“a”替换为 1,将 b 替换为 2,将 c 替换为 3,因为这些是 LK 中的“规则”。

有没有办法告诉 R:查看 An 中的每个元素,在 LK$Strn 中找到匹配项并将 An 替换为 LK$String ?

所以结果列表的开头将是

[[1]]
[1] "a" "b" "c"

[[2]]
[1] "a" "c" "b"

显然,完整的结果列表将与 An 大小相同。

我试过match()了,但我一定做错了什么......

任何帮助将不胜感激。

4

1 回答 1

1

你可以像这样快速地完成它......

res <- lapply( An , function(x){ x <- as.character( LK[ match( x , LK$Strn ) , "String" ] ) } )

    res
#   [[1]]
#   [1] "a" "b" "c"

#   [[2]]
#   [1] "a" "c" "b"

#   [[3]]
#   [1] "c" "a" "b"

#   [[4]]
#   [1] "c" "b" "a"

#   [[5]]
#   [1] "b" "c" "a"

#   [[6]]
#   [1] "b" "a" "c"
于 2013-03-20T11:42:35.723 回答