我想在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,我只得到向量,而不是整个数据帧 有什么建议吗?
答案 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
单独放在最后一行,以返回该值。