任何人都可以弄清楚为什么这不起作用?
test<-c(1,2,3,4)
adding<-function(file){
file2<- file + 1
return(file2)
}
adding(file = 1)
产量:
> adding(file = 1)
[1] 2
但是当我尝试时:
for(number in test){
adding(number)
print(number)
}
我明白了:
> for(number in test){
+ adding(number)
+ print(number)
+ }
[1] 1
[1] 2
[1] 3
[1] 4
当我预料到的时候:
[1] 2
[1] 1
[1] 3
[1] 2
[1] 4
[1] 3
[1] 5
[1] 4
我将这个基础用于我正在研究的另一个for loop
并想知道它为什么不起作用。
答案 0 :(得分:5)
选择
for(number in test){
print(adding(number))
print(number)
}
获得预期的行为,否则adding
本身不会打印到屏幕上。
答案 1 :(得分:2)
您的示例完全按预期工作。您从未在循环中显式打印函数调用的返回值。循环中关闭自动打印。
答案 2 :(得分:1)
如果您希望将函数的结果应用于向量的每个元素作为向量本身,那么
purrr::map_dbl(test, adding)
## [1] 2 3 4 5
或
sapply(test, adding)
答案 3 :(得分:0)
在没有print
语句的情况下将某些内容打印到屏幕上只发生在交互式环境中,并且只有在大多数scopes内。函数内部的变量有自己的范围,不打印这些变量。
尽管如此:例如,这在MATLAB中是不同的,其中打印了每个语句不以;
结尾的结果。在Python中,另一个要求是单独执行这样的语句。因此,执行两个语句不会打印任何内容,即使最后一个是可能打印的内容。