本书 R for Data Science gives this example
package main
import (
"fmt"
"os/exec"
)
var cmds = map[string][]string{
"go": []string{"/usr/local/go/bin/go", "version"},
"java": []string{"java", "-version"},
}
type GetHand struct {
Name string
Version string
}
func handleKey(key string) (*GetHand, error) {
cmd := cmds[key]
if cmd == nil {
return nil, fmt.Errorf("No such key : %v", key)
}
b, err := exec.Command("/usr/local/go/bin/go", "version").Output()
if err != nil {
return nil, err
}
return &GetHand{
Name: key,
Version: string(b),
}, nil
}
func main() {
h, err := handleKey("go")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(h)
h, err = handleKey("java")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(h)
}
结果是library(nycflights13)
library(tidyverse)
filter(flights, month == 11 | 12)
过滤了月份== 1的所有航班,因为“它找到所有等于11 | 12的月份,一个评估为TRUE的表达式”
为什么先做“11 | 12”,然后进行比较?不应该首先做“月== 11”,然后“或”用12,返回一个全部为TRUE的向量,因此返回所有内容?
下面显示R优先于dplyr
而不是==
:
|
答案 0 :(得分:3)
结果是dplyr过滤了月份== 1
的所有航班
这不是真的,过滤器什么都不做,并返回原始数据框。
filter(flights, month == 11 | 12) %>% dim()
# [1] 336776 19
dim(flights)
# [1] 336776 19
为什么会这样做" 11 | 12"首先,然后进行比较?
不正确,它首先比较month == 11
给出一个逻辑向量,当| 12
评估为TRUE时变为全为TRUE。
R优先于== over |
这是正确的陈述。
您可以参考R here中的运算符优先级, 从最高到最低 :
12