为什么R评估ifelse和if语句有何不同?这是一个小故障吗?

时间:2015-09-04 22:07:05

标签: r if-statement

我遇到了一些非常奇怪的事情。

我有一个名为stand的数据框。我也有标准= 1:2。如果支架的行数小于或等于8,我只想输出2:3,这应该是标准+ 1。如果它大于8,我希望所有列都由standards参数指定,除了最后一个加一个。标准向量指的是列标签,它们位于源数据帧中的位置,因此+1变化。这就是它变得奇怪的地方。

这正是我输入的内容

stand<-structure(list(Stand.Conc = c(5000, 2500, 1250, 625, 312.5, 0
)), .Names = "Stand.Conc", row.names = c(NA, -6L), class = "data.frame")
standards<-1:2

> nrow(stand)
[1] 6
> nrow(stand)>8
[1] FALSE
> 1+standards[1:(length(standards)-1)]
[1] 2
> standards+1
[1] 2 3
> ifelse(nrow(stand)>8,1+standards[1:(length(standards)-1)],standards+1)
[1] 2
> if(nrow(stand)>8){
+           1+standards[1:(length(standards)-1)]}else{
+               standards+1
+               }
[1] 2 3

有人请帮助我理解这里发生了什么,因为ifelse和if else返回两个不同的东西。如果其他方法正常工作,但ifelse似乎返回TRUE值,即使FALSE是测试的结果。我在MAC版本10.10.4上使用R 3.2.1 GUI 1.66 Mavericks build(6956)

0 个答案:

没有答案