我在尝试使用基于函数的条件计算创建新列时遇到问题。使用函数创建列
我有一些小数据集用于内插基于高度(CalcAlt)的参考温度(Tref)。
该函数在我尝试执行单个计算时起作用,但当我尝试将函数应用于数据集以创建新列Tref时出现问题。
代码摘录如下。
欢迎任何建议!
我得到一个错误“适用错误(FUN = FUN_Tref,Airlines $ AC_MODEL,Airlines $ CalcAlt): dim(X)必须具有正值长度”。
这是我第一次使用apply函数。
我哪里错了?我是一个相对的R,所以可以承认失去了!
史蒂夫
CalcAlt <- c(200,200,400,400,600,600,800,800,1000,1000)
AC_MODEL <-c("320-232","321-231","320-232","321-231","320-232","321-231","320-232","321-231","320-232","321-231")
Airlines <- data.frame(AC_MODEL , CalcAlt)
#Create dataframe showing Tref
V2533_alt <- c(-2000,-1000,0,1000,2000,3000,4000,5000,6000,7000,8000,9000,10000,11000,12000,13000,14000,14500)
V2533_Tref <- c(19.2, 17.1,15,13.8,11.4,11.9,12,11.9,13.9,15.9,17.8,19.5,21.2,21.8,22.8,25.1,28.5,30.7)
V2533 <- data.frame(V2533_alt, V2533_Tref)
V2533
V2527_alt <- c(0,5200,14500)
V2527_Tref <- c(31, 25,25)
V2527 <- data.frame(V2527_alt, V2527_Tref)
V2527
#Create function to calculate Tref based on aircraft type and calculated altitude
FUN_Tref <- function(AC_type, CalcAlt){
if(AC_type =="320-232"){
#systematic calculation
Tref <- approx(V2527_alt, V2527_Tref, xout = CalcAlt)
}
if(AC_type =="321-231"){
#systematic calculation
Tref <- approx(V2533_alt, V2533_Tref, xout = CalcAlt)
}
Tref <- as.numeric(Tref[2])
return(Tref)
}
#END-OF_FUNCTION
############################
#Apply function to create new column Tref
Airlines$Tref <- apply(FUN = FUN_Tref, Airlines$AC_MODEL, Airlines$CalcAlt)
http://stackoverflow.com/questions/3505701/r-grouping-functions-sapply-vs-lapply-vs-apply-vs-tapply-vs-by-vs-aggrega你可能会发现有帮助 – Khashaa 2015-03-02 11:49:49