【发布时间】:2012-04-17 19:06:37
【问题描述】:
借助flodel我found a way to replace numeric codes with value labels from a lookup table。
虽然我很有野心,但我现在想把它放到一个函数中。另外,我有很多查找表需要快速查找我的数据,这样一个函数就会很方便。
但首先是一些示例数据,从数据帧开始,
df <- data.frame(id = c(1:6),
profession = c(1, 5, 4, NA, 0, 5))
df
# id profession
# 1 1
# 2 5
# 3 4
# 4 NA
# 5 0
# 6 5
还有一个查找表,其中包含有关职业代码的人类可读信息,
profession.lookuptable <- c(Optometrists=1, Accountants=2, Veterinarians=3,
`Financial analysts`=4, Nurses=5)
flodel 给我看了how replace numeric codes with value labels from a lookup table。像这样,
match.idx <- match(df$profession, profession.lookuptable)
df$profession <- ifelse(is.na(match.idx),
df$profession, names(profession.lookuptable)[match.idx])
df
# id profession
# 1 Optometrists
# 2 Nurses
# 3 Financial analysts
# 4 <NA>
# 5 0
# 6 Nurses
我现在想把它放到一个函数中,我可以在其中声明数据框 df 和变量名称 profession,然后让函数处理其余的事情。
我这样定义我的函数,
ADDlookup <- function(orginalDF, orginalVAR) {
DF.VAR <- paste(orginalDF, "$", orginalVAR, sep="")
lookup.table <- paste(orginalVAR, ".lookuptable")
match.idx <- match(DF.VAR, lookup.table)
DF.VAR <- ifelse(is.na(match.idx), DF.VAR, names(lookup.table)[match.idx])
}
但显然这不起作用
ADDlookup(df, profession)
我得到了错误的混乱
Error in paste(orginalDF, "$", orginalVAR, sep = "") :
object 'profession' not found
现在,这就是我卡住的地方。
谁能告诉我需要阅读哪个手册页或者关于如何解决这个问题的友好提示?
感谢您的阅读。
【问题讨论】: