我遇到了一些非常奇怪的事情。
我有一个名为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)