“万人往LVR”同学的函数在引用"character"的实参时,是没有问题的。比如:
可以看到,当‘i’的实参value为"character"、"integer"、"numeric"等类型的值时,都是可以正常引用的。不过注意,当是"numeric"时,实际引用的列数是‘i’的value被truncated后的值,并非四舍五入后的值。
“jiangbeilu”同学用到了substitute()和deparse()函数,是涉及了R语言很牛逼的一个特性,即:R has powerful tools for computing not only on values, but also on the actions that lead to those values.——by Hadley Wickham。上面这个特点能够在我们这个实际案例中发挥什么作用呢?至少其中一条,可以让‘i’的实参不加引号,就可以正常使用,也就是说,fun(airquality, Month)和fun(airquality, "Month")都能正常运行,就像library(ggplot2)和library("ggplot2")都正确一样。
当然,这个函数没有什么用,纯粹是为了举个例子,因为,它不能处理 i 为5、5.5、5L时的情况,而且如果 i 的值是个向量,也无法正确引用,要完善这个函数稍微复杂一点,我就引用Hadley Wickham的示范代码如下:
就实用性而言,“万人往LVR”同学的函数就简洁够用了。