我正在编写一个用于随机游走的函数,但我意识到只有当我指定“ print”时,才通过键入其名称来打印变量。所关注的变量称为“ this”。
rwalk = function(k) {
this = sample(c(1,-1),k,TRUE,c(0.5,0.5))
this
x = append(c(0),cumsum(t))
x
}
上面,仅打印x的值。
rwalk = function(k) {
this = sample(c(1,-1),k,TRUE,c(0.5,0.5))
print(this)
x = append(c(0),cumsum(t))
x
}
在此同时打印两个值。为什么会这样?
答案 0 :(得分:0)
我猜您在运行^/proj/trunk
时没有将输出分配给变量
rwalk
因此rwalk(3)
返回到全局环境并打印,因为它没有分配给变量。这是R的行为。在全局环境中,键入x
等效于x
。但是print(x)
处于函数this
的环境中。除非程序员明确声明,否则没有理由打印它。这就是您使用rwalk
所做的。
如果将输出分配给变量,则不会打印任何内容。
print(this)
要点是,函数结尾之前的最后x <- rwalk(3)
不会打印任何内容。它指出该函数返回x
。只有在函数外部,才返回该值。
答案 1 :(得分:0)
在没有任何类型的return
语句的情况下,默认情况下,函数仅返回输出的最后一行,并且一次只能返回一个对象。如果您运行类似
rwalk = function(k) {
this = sample(c(1,-1),k,TRUE,c(0.5,0.5))
return(this)
x = append(c(0),cumsum(t))
x
}
然后将仅返回this
。如果您想实际获得this
作为输出(而不仅仅是打印它),则需要使用x
将其放在列表中。
rwalk = function(k) {
this = sample(c(1,-1),k,TRUE,c(0.5,0.5))
x = append(c(0),cumsum(t))
list(this, x)
}