2013-06-27 30 views
0

我已经阅读了以下的答案,但它停止只是空头回补什么,我现在遇到的麻烦的:Pass a data.frame column name to a function指定列名

我要选择列,并为其分配值基于什么是新列在旧栏中。

例子:

test <- data.frame(A = c(1:10), 
       B = c(1:10), C = c(1:10), 
       P = c(1:10)) 

这工作:

change <- function(data){ 
    if("P" %in% colnames(data)) {   
    data$Z <- NA 
    data$Z[data$P==1] = 99 
    data$P <- NULL 
    } 
    return(data) 
} 
test2 <- change(test) 

但我想在函数的参数来指定新老列。

我又试图这一点,但它不工作:

change <- function(data, oldcol, newcol){ 
    if(oldcol %in% colnames(data)) {   
    data[newcol] <- NA 
    data[newcol][data[oldcol==1]] = 99 # I think it's this line I've got wrong 
    data[oldcol] <- NULL 
    } 
    return(data) 
} 
test2 <- change(test, "P", "Z") 

回答

2
change <- function(data, oldcol, newcol){ 
    if(oldcol %in% colnames(data)) {   
    data[newcol] <- NA 
    data[newcol][data[oldcol]==1] <- 99 # I think it's this line I've got wrong 
    data[oldcol] <- NULL 
    } 
    return(data) 
} 
test2 <- change(test, "P", "Z")