r - R中打印语句的评估顺序
问题描述
我不确定print
(or message
, cat
) 函数的惰性求值是如何工作的。例如:
func1 <- function(i) print("first")
func2 <- function(i) print("second")
1 %>%
func1() %>%
func2()
[1] "second"
即只执行第二个打印语句。
但是,如果我在每个函数中执行一个操作
func3 <- function(i) {
print("first")
i + 1
}
func4 <- function(i) {
print("second")
i * 2
}
1 %>%
func3() %>%
func4()
[1] "second"
[1] "first"
[1] 4
然后print
语句向后出现,但操作i
以正确的顺序发生 ( (1+1)*2=4
)。
如果我将 in 合并i
到 print 语句中,一切都会按顺序出现:
func5 <- function(i) {
print(paste("first", i))
i + 1
}
func6 <- function(i) {
print(paste("second", i))
i * 2
}
1 %>%
func5() %>%
func6()
[1] "first 1"
[1] "second 2"
[1] 4
这里发生了什么?如何强制打印语句以正确的顺序执行?阅读惰性评估时,我发现人们使用该force
函数,但将print
语句包装在其中似乎并没有改变任何东西。
任何帮助将非常感激 :)
解决方案
推荐阅读
- reactjs - 如何使用功能组件和 React Router v5 拦截 React SPA 中的后退按钮
- android - ProcessException:进程超时:当xode构建完成Flutter应用程序时
- javascript - 开玩笑 moduleNameMapper 不工作 - 错误 TS2307:找不到模块'@/[...]'
- c# - C# Linq - 根据开始时间和结束时间的时间差分组
- javascript - 将函数导出为默认值,同时对其进行解构以在同一类中使用
- java - 用另一个矩阵java的一部分填充矩阵
- objective-c - 如何一次引用多个objectForKey?
- python - 无法使用 Google Cloud Scheduler 调用 Google Cloud Function
- arrays - 在 ruby 中打印 .txt 时遇到问题,ruby 文件处理
- swift - Swift 协议的可变性