我有一个计算数据帧平均值的函数,如果变量类型与计算平均值不兼容,我想添加一条错误消息,即类型字符的ID列。 到目前为止我有:
meanvals <-function(i, data) {ifelse(typeof(i)=="integer" | typeof(i)=="numeric", mean(df[,i])/100, warning( "is an invalid type of variable"))}
但这不是识别数字变量。我还想包括i的数值不是数字,但无法弄清楚如何为i的每个值更改它。
答案 0 :(得分:0)
完成生成均值列表或“无效”结果的一种方法是在基数R中使用apply()
函数。
data(mtcars)
# add rownames as a character variable to data frame
mtcars$carName <- rownames(mtcars)
lapply(mtcars,function(x){
if(typeof(x) == "character") " is not numeric."
else mean(x,na.rm=TRUE)
})
...和输出:
$mpg
[1] 20.09062
$cyl
[1] 6.1875
$disp
[1] 230.7219
$hp
[1] 146.6875
$drat
[1] 3.596563
$wt
[1] 3.21725
$qsec
[1] 17.84875
$vs
[1] 0.4375
$am
[1] 0.40625
$gear
[1] 3.6875
$carb
[1] 2.8125
$carName
[1] " is not numeric."