gpt4 book ai didi

r - dplyr :mutate and transform when using pmin and pmax? 之间的差异

转载 作者:行者123 更新时间:2023-12-04 04:30:26 25 4
gpt4 key购买 nike

在尝试回答时 this question ,我遇到了mutate之间的区别和 transform在我期望的等效操作中。

# data
x <- data.frame(a=c(rep(0,10),rep(1,10),3),b=c(1:10,0,11:19,0))

#transform
transform(x,a=pmin(a,b), b=pmax(a,b))
a b
1 0 1
2 0 2
3 0 3
4 0 4
5 0 5
6 0 6
7 0 7
8 0 8
9 0 9
10 0 10
11 0 1
12 1 11
13 1 12
14 1 13
15 1 14
16 1 15
17 1 16
18 1 17
19 1 18
20 1 19
21 0 3

#mutate
libarary(dplyr)
x %>% mutate(a=pmin(a,b), b=pmax(a,b))
a b
1 0 1
2 0 2
3 0 3
4 0 4
5 0 5
6 0 6
7 0 7
8 0 8
9 0 9
10 0 10
11 0 0
12 1 11
13 1 12
14 1 13
15 1 14
16 1 15
17 1 16
18 1 17
19 1 18
20 1 19
21 0 0

注意第 11 行和第 21 行的区别。我怀疑 mutate正在改变数据,因此, pmax没有看到原始数据。这样对吗?这是一个错误,还是设计使然?

最佳答案

看来我的怀疑是正确的,并且设计允许在之后立即使用计算变量,例如:

data.frame(a=1:4,b=5:8) %>% mutate(sum=a+b, letter=letters[sum])
a b sum letter
1 1 5 6 f
2 2 6 8 h
3 3 7 10 j
4 4 8 12 l

为了复制来自 transform 的预期行为一个需要简单地直接引用变量:
x %>% mutate(a=pmin(x$a,x$b), b=pmax(x$a,x$b))
a b
1 0 1
2 0 2
3 0 3
4 0 4
5 0 5
6 0 6
7 0 7
8 0 8
9 0 9
10 0 10
11 0 1
12 1 11
13 1 12
14 1 13
15 1 14
16 1 15
17 1 16
18 1 17
19 1 18
20 1 19
21 0 3

关于r - dplyr :mutate and transform when using pmin and pmax? 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com