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 に答える