由于长度是一种通用方法,为什么我不能这样做
length.character <- nchar
Run Code Online (Sandbox Code Playgroud)
?似乎字符串在R中被特殊处理.这是有原因的吗?你会不鼓励定义head.character和tail.character等函数吗?
如果您查看InternalMethods的帮助页面(在帮助页面的详细信息部分中提到了长度),请说明
为了提高效率,内部调度仅发生在对象上,即'is.object'返回true的对象.
向量不是与其他对象具有相同意义的对象,因此方法调度不是在任何基本向量(不仅仅是字符)上完成的.如果你真的想使用这种类型的调度,你需要一个定义的对象,例如:
> tmp <- state.name
> class(tmp) <- 'mynewclass'
> length.mynewclass <- nchar
> length(tmp)
[1] 7 6 7 8 10 8 11 8 7 7 6 5 8 7 4 6 8 9 5 8 13 8 9 11 8
[26] 7 8 6 13 10 10 8 14 12 4 8 6 12 12 14 12 9 5 4 7 8 10 13 9 7
>
Run Code Online (Sandbox Code Playgroud)