为父环境中的数据框分配值

时间:2015-12-02 15:17:48

标签: r

我有一个父函数(fun1),它使用data和一个辅助函数(fun2)来操作data的列。我想将该辅助函数的值分配给它datafun1的匹配列。实际上有很多小的辅助函数在列上运行,我希望fun2改变的值是其他辅助函数处理的值。

如何从fun2中取出广告并将其分配到datafun1的匹配列?我不想进行更改到data中的fun1,但想要在data内更改fun2

fun1 <- function(data){

    Map(fun2, data, colnames(data))

    data[[1]]
}

fun2 <- function(x, colname_x){

    x <- x * 2

    # my attempt to assign to `data[["mpg"]]`
    assign(sprintf("data[[\"%s\"]]", colname_x), value=x, pos = 1)

}


fun1(mtcars[1:3])

fun1的所需输出:

##  [1] 42.0 42.0 45.6 42.8 37.4 36.2 28.6 48.8 45.6 38.4 35.6 32.8 34.6 30.4 20.8
## [16] 20.8 29.4 64.8 60.8 67.8 43.0 31.0 30.4 26.6 38.4 54.6 52.0 60.8 31.6 39.4
## [31] 30.0 42.8

编辑: 也尝试过:

fun2 <- function(x, colname_x = "mpg"){
    x <- x * 2
    assign(sprintf("data[[\"%s\"]]", colname_x), value=x, env = parent.frame(3))
}

编辑2 这有效,但似乎不那么干净: “

fun2 <- function(x, colname_x = "mpg"){

    x <- x * 2
    data <- get('data', env=parent.frame(3))
    data[[colname_x]] <- x
    assign('data', value=data, env = parent.frame(3))

}

0 个答案:

没有答案