R:置换函数

来源:互联网 发布:食品研究与数据分析 编辑:程序博客网 时间:2024/05/20 09:07


    先看下面一段代码:

> x <- c( 1, 2, 4 )

> names( x )

NULL

> names( x ) <- c( "a", "b", "c" )

> x

a b c 1 2 4 

    这似乎没有什麽问题?但实际上,第四行怎么可以把一个数赋值给一个函数调用的结果呢?这个特殊的现象的解释依赖于R语言中的置换函数(replacement functions)。上面那行代码实际执行的形式是:x <- "names<-"( x, value=( "a", "b","c" ) )

 

    任何左边不是标识符(意味变量名)的赋值语句,都可看作是“置换函数”。当我们遇到以下形式:g(u)<-v,R语言会尝试执行以下形式:u <- "g<-"( u, value=v )。如果没有事先定义好g<-()就执行语句会出现错误。要注意置换函数比原函数g()多一个具名参数。

 

    x[3] <- 8,赋值符左边不是变量名。所以它也是置换语句。下标操作是函数。函数"["()用于读向量元素,"[<-"()用于写操作。

> x <- c( 1, 2, 3, 4, 5 )

> "["( x, 3 )

[1] 3

> "[<-"( x, 2:4, value=12:14 )

[1]  1 12 13 14  5

 

 



0 0