使用ifelse转换数据框中的列并返回结果

时间:2015-09-16 10:18:37

标签: r

我刚学会了,ifelse会返回一个与test形状相同的值。

如果某个逻辑变量设置为TRUE,我想从数据框返回一个日志转换列,但我只得到一个值,有时候是NaN

有没有正确的方法来做到这一点。我喜欢ifelse解决方案,因为它易于阅读。

以下是一些示例代码:

log_a <- TRUE
jnk <- data.frame(a=c(1,2,3,4))
ifelse(log_a, log2(jnk[['a']]), jnk[['a']])

我期望的是0.000000 1.000000 1.584963 2.000000,但我得到0

我想用这个结果来构建另一个数据框:

jnk2 <- data.frame(x=ifelse(log_a, log2(jnk[['a']]), jnk[['a']]), y=c(1,2,3,4))

1 个答案:

答案 0 :(得分:1)

试试这个:

sapply(jnk$a, function(i) ifelse(log_a, log2(i), i))

# result    
# [1] 0.000000 1.000000 1.584963 2.000000