0

次の回答を読みましたが、現在問題を抱えていることをカバーするには不十分です: data.frame 列名を関数に渡す

列を選択し、古い列の内容に基づいて新しい列に値を割り当てたいと考えています。

例:

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")
4

1 に答える 1

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")
于 2013-06-27T11:32:52.477 に答える