我想用他们的全名重命名缩写名称列表。如果我能够为每个名称选择一个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”&lt; - “Cat”)来创建此列表,但我希望根据“Full”设置每个单独的行“名单
答案 0 :(得分: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是对的,这似乎是不必要的。
答案 1 :(得分: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