2013-06-27 28 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")