我有两个模仿我创建的功能的函数。唯一的区别是最后一行。第一个返回一个向量,第二个返回一个数据帧;我想要一个数据框。我不明白两者之间的区别。
x<-rnorm(5)
y<-rnorm(5)
t<-function(x,y){
d<-data.frame(cbind(x,y))
d$e<-y*2
}
g<-t(x,y)
> g
[1] -1.3912452 1.0013463 -2.8913569 1.9724236 -0.3014467
这会返回一个向量
u<-function(x,y){
d<-data.frame(cbind(x,y))
within(d,e<-y*2)
}
h<-u(x,y)
> h
x y e
1 0.80599999 -0.6956226 -1.3912452
2 -0.04446587 0.5006731 1.0013463
3 0.65049716 -1.4456785 -2.8913569
4 -1.69269074 0.9862118 1.9724236
5 1.70878627 -0.1507234 -0.3014467
这将返回一个数据框。
我可以逐行运行第一行,而不是作为函数运行,它会返回一个数据框,但是当我将它包装在函数中时却不会。感谢您的任何见解。
答案 0 :(得分:0)
第一个函数返回向量的原因是它返回了d $ e,因为那是在函数的最后一行创建的对象。如果在函数末尾添加return(d),您将获得您期望的数据框。明确的回报通常是个好主意。