【发布时间】:2016-08-22 18:57:18
【问题描述】:
我的目标是比较两个向量中的元素。
这是我的第一个小标题:
Post_Rev
# A tibble: 12 x 2
Fiscal.Quarter.ID Rev
<S3: yearqtr> <dbl>
1 2014 Q1 3889692022
2 2014 Q2 3763028239
3 2014 Q3 4092263526
4 2014 Q4 4865950809
5 2015 Q1 4015879019
6 2015 Q2 4112382310
7 2015 Q3 4247783642
8 2015 Q4 5040074056
9 2016 Q1 4100946981
10 2016 Q2 4021051564
11 2016 Q3 4373665674
12 2016 Q4 5064779447
这是我的第二个向量:
Total_Rev
[1] 3889692022 3763028239 4092263526 4865950809 4015879019 4112382310 4247783642 5040074056
[9] 4100946981 4021051564 4373665674 5064779447
我们可以看到,两个向量,即 Post_Rev 和 Total_Rev 中的 Rev 是相等的。 我还会告诉你类类型。
class(Post_Rev$Rev)
[1] "numeric"
class(Total_Rev)
[1] "numeric"
但是,当我运行 ifelse 时,它会为某些行抛出“不等行”:
ifelse(Post_Rev$Rev != Total_Rev,TRUE,FALSE)
[1] FALSE **TRUE** FALSE FALSE FALSE FALSE FALSE FALSE **TRUE TRUE** FALSE FALSE
可能是什么原因?无论如何我可以找出原因吗?非常感谢您的想法。
我尝试了 Wickham 的 if_else 函数:
if_else(Post_Rev$Rev != Total_Rev,TRUE,FALSE)
[1] FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE FALSE
我得到了同样的结果。我不确定为什么会这样。
添加 dput():
dput(Post_Rev)
structure(list(Fiscal.Quarter.ID = structure(c(2014, 2014.25,
2014.5, 2014.75, 2015, 2015.25, 2015.5, 2015.75, 2016, 2016.25,
2016.5, 2016.75), class = "yearqtr"), Rev = c(3889692022.46776,
3763028239.33219, 4092263526.07502, 4865950809.37372, 4015879019.37871,
4112382310.2044, 4247783641.70853, 5040074055.98503, 4100946980.66123,
4021051564.10049, 4373665674.01029, 5064779446.86354)), .Names = c("Fiscal.Quarter.ID",
"Rev"), row.names = c(NA, -12L), class = c("tbl_df", "tbl", "data.frame"
))
dput(Total_Rev)
c(3889692022.46776, 3763028239.33219, 4092263526.07502, 4865950809.37372,
4015879019.37871, 4112382310.2044, 4247783641.70853, 5040074055.98503,
4100946980.66123, 4021051564.10049, 4373665674.01029, 5064779446.86354
【问题讨论】:
-
"我们可以看到,两个向量,即 Post_Rev 中的 Rev 和 Total_Rev 是相等的。将数字与计算机进行比较的第一条规则是不要将您看到的打印在屏幕上 与实际值 混淆。仔细检查
ifelse所说的不等于all.equal()。 -
(另外,
ifelse是多余的,因为==和!=已经矢量化了) -
除非您将
dput()的输出同时添加到Post_Rev和Total_Rev到您的问题中,否则我无法做更多。 -
这是一个常见问题解答,杰克。数值未按其完整级别的精度显示。
-
hep.by/gnu/r-patched/r-faq/R-FAQ_82.html(R 常见问题解答 7.31)
标签: r if-statement dplyr