在R中传递和返回函数

时间:2014-06-09 03:14:11

标签: r function dataframe

我想在R中创建一个函数,它将数据作为一个函数,对它进行一些操作(添加一些列/行等)并返回它。我发现通常我不能这样做。

f <- function(d = cars){
    d$new = ifelse(d$dist > rep(10, nrow(d)), 1, 0)
    return d 
}

Error: unexpected symbol in:
"d$new= ifelse(d$dist>rep(10,nrow(d)),1,0)
return d"

如果我删除了返回d,我只得到向量,而不是整个数据帧 有什么建议吗?

1 个答案:

答案 0 :(得分:2)

R中的函数返回上一个执行语句的值。执行赋值时,赋值左侧的值是(不可见)返回的结果。例如

d <- cars
a <- (d$new <- ifelse(d$dist>10, 1, 0))
a

#  [1] 0 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
# [40] 1 1 1 1 1 1 1 1 1 1 1

因此,在您的示例中,您只是返回刚刚创建的向量。 R不知道您想要返回整个d data.frame。如果您放置return(d),它就会知道您想要的是什么。您甚至可以将d单独放在最后一行,以返回该值。