说我有一个功能
f1<- function(a,b){
output<-ifelse(a=='b','yes',NA)
return(output)
}
函数不知道如何将b的值放在引号中,因为我希望它在函数中运行。有办法解决这个问题吗?
更新清晰度
a<-c(1,2,3,4,5,6)
b<-c('T','T','T','F','F','F')
d<-data.frame(a,b)
f1<- function(condition,a,b){
output<-ifelse(b=='condition',a,NA)
return(output)
}
所以,如果我想返回一个包含数据帧中a值的向量,但只有当b值等于T时,我才会写
f1(T,d$a,d$b)
这将返回向量
1,2,3,NA,NA,NA
我只是在告诉ifelse声明放置我的条件&#39;用引号括起来。
答案 0 :(得分:0)
您的问题已在评论中得到解答,但习惯于使用逻辑更好的做法,即T
或TRUE
以及F
或FALSE
。如果您有b = c(T, T, F)
,则无需执行ifelse(b == T, ...)
,只需使用ifelse(b, ...)
。您也可以使用!
轻松否定。
你的例子可以简化为:
a<-c(1,2,3,4,5,6)
b<-c('T','T','T','F','F','F')
good.b <- as.logical(b)
# Now some sample output
> good.b
[1] TRUE TRUE TRUE FALSE FALSE FALSE
> a[good.b]
[1] 1 2 3
> a[!good.b]
[1] 4 5 6
> a[!good.b] <- NA # This line does what your function does
> a
[1] 1 2 3 NA NA NA