#Create a function to print squares of numbers in sequence
squareseq <- function(a) {
for(i in 1:a) {
b <- i^2
result <- print(b)
}
return(result)
}
# Call the function supplying 6 as an argument
squareseq(6)
调用上面的函数的结果如下所示:
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36
[1] 36
如何保留“返回(结果)”但删除重复的行:“ [1] 36”?所以我在下面得到这个结果:
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36
答案 0 :(得分:2)
使用invisible
:
squareseq <- function(a) {
for(i in 1:a) {
b <- i^2
result <- print(b)
}
invisible(result)
}
squareseq(6)
#[1] 1
#[1] 4
#[1] 9
#[1] 16
#[1] 25
#[1] 36
答案 1 :(得分:2)
在这里,我的回答将是过时的理论。
方法中的问题是,首先要在for
循环中打印值,因此,每当调用函数时,它将按参数(所有数字)打印。现在,当函数退出该循环时,您将返回一个值,该值将返回您情况下名为result的变量的最新值,这实际上是仅最后一个项目被打印2次的实际原因(因为该项目先前已经被打印并且现在被返回)。
根据@Roland的评论,我现在已经编辑了答案(它说不返回任何函数,似乎不适用于R)。由于必须返回R中的值,因此请使用@DiceboyT的不错的解决方案,使用invisible
。