1

略称のリストの名前をフルネームに変更したいと思います。名前ごとに選択できる GUI リストを表示できれば、最も簡単です。

したがって、一意の略称のリストが与えられた場合

 Abbrev<-c("C","Ca","CA","D","Do","Ham","Hammy","C","Hammy","D","Ham")
 Abbrev<-unique(Abbrev)

そして彼らのフルネームのリスト

 Full<-c('Cat','Dog','Hamster')

理想的には、略語リストの各要素を調べて、フルネームのリストとともに画面にポップアップ表示させたいと思います。したがって、一意の略語ごとに、

select.list(Full)

最終結果は次のようになります。

Abbrev   Full
 C        Cat
 Ca       Cat
 CA       Cat
 D        Dog
 Do       Dog
 Ham      Hamster
 Hammy    Hamster

このリストを作成するために、各略語をフルネーム (DF$Abbrev=="C"<- "Cat") に設定できることはわかっていますが、「フル」ネーム リストに基づいて個々の行を設定したいと考えています。

4

2 に答える 2

2

実際にこれを行うために GUI インターフェースを使用したい場合は、次のようにしてみてください。

out <- lapply(Abbrev,function(x) {
    z <- select.list(Full,title=paste("Name:",x))
    return(list(abbrev=x,full=z))
})
out <- cbind(sapply(out,function(x) x$abbrev), sapply(out,function(x) x$full))
fullout <- out[out[,1]==Abbrev,2]

しかし、@RicardoSaportaは、これが不要に思えるのは正しいです。

于 2013-08-04T20:32:24.600 に答える
1

ちょっと考えただけで、pmatchあなたのために多くのリフトを行うことができます:

# using pmatch does much of the work for you: 
someNames <- Full[sapply(tolower(Abbrev), pmatch, tolower(Full))]
names(Abbrev) <- someNames
Abbrev
#    Cat     Cat     Cat     Dog     Dog Hamster    <NA>     Cat    <NA>     Dog  Hamster 
#    "C"    "Ca"    "CA"     "D"    "Do"   "Ham" "Hammy"     "C" "Hammy"     "D"    "Ham" 

一致しなかったものは、次の方法で見つけることができますis.na

is.na(Abbrev)

# or modified by hand: 
names(Abbrev)[c(7, 9)] <- c("Hamster", "Hamster") 

Abbrev
于 2013-08-04T20:32:32.593 に答える