[英]How to use R function properly
我有一個 dataframe 命名data
和列comfort
, condition
和其他一些。 我對 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.