如果需要在R中使用引号,如何在函数内调用函数参数

时间:2014-06-17 18:58:19

标签: r

说我有一个功能

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;用引号括起来。

1 个答案:

答案 0 :(得分:0)

您的问题已在评论中得到解答,但习惯于使用逻辑更好的做法,即TTRUE以及FFALSE。如果您有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