簡體   English   中英

如何正確使用 R function

[英]How to use R function properly

我有一個 dataframe 命名data和列comfortcondition和其他一些。 我對 5 列進行了相同的操作,並決定編寫以下 function:

replacing_na_999<-function(df, variable){
  #variable<-as.name(variable)
  levels <- levels(df$variable)
  levels[length(levels) + 1] <- "999"
  df$variable <- factor(df$variable, levels = levels)
  df$variable[is.na(df$variable)] <- "999"
}

當我嘗試:

replacing_na_999(data, comfort)

它返回一個錯誤:

 Error in `$<-.data.frame`(`*tmp*`, variable, value = integer(0)) : 
  replacement has 0 rows, data has 44070 

有人可以幫我用語法嗎?

這適用於我的電腦

m<-structure(list(district = structure(c(6L, 21L, 20L, 19L, 5L, 8L), 
                                           .Label = c("I", "II", "III", "IV", "IX", "V", "VI", "VII", "VIII", "X", "XI", "XII", "XIII", "XIV", "XIX", "XV", "XVI", "XVII", "XVIII", "XX", "XXI", "XXII", "XXIII"),
                                           class = "factor"), 
                      ln_price = c(5.52146091786225, 4.9416424226093, 4.74493212836325, 5.01063529409626, 4.55387689160054, 5.07517381523383)), 
                 row.names = c(NA, 6L), class = "data.frame")
    m[4,1]<-NA
    m

    m<-sapply(m,function(x) {
      if(is.factor(x))
        factor(x,levels=c(levels(x),999))
      else x
    }
    )

    m[is.na(m)]<-999
    m

也許是這樣的:

replacing_na_999<-function(df, variable){
  idx <- which(variable == names(df))
  #variable<-as.name(variable)
  levels <- levels(df[idx])
  levels[length(levels) + 1] <- "999"
  df[idx] <- factor(df[idx], levels = levels)
  df[idx][is.na(df[idx])] <- "999"
  return(df)
}

將避免將名稱作為參數傳遞給您的 function

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM