有条件地打印错误消息

时间:2018-04-15 00:42:06

标签: r

我有一个计算数据帧平均值的函数,如果变量类型与计算平均值不兼容,我想添加一条错误消息,即类型字符的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的每个值更改它。

1 个答案:

答案 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."