我有这样的数据:
> data
gene log2FC
1 A NA
2 B 1
3 C 2
4 D -3
我希望使用基于log2FC的新列FC生成数据:
> data
gene log2FC FC
1 A NA NA
2 B 1 2
3 C 2 4
4 D -3 -8
我写了一个循环来得到结果:
LFC <- data$log2FC
FC <- NULL
for ( i in 1:length(LFC) ) {
a <- LFC[i]
if ( is.na(a) ) {
FC[i] <- NA
} else {
if ( a < 0 ) {
FC[i] <- (-1)/(2^a)
} else {
FC[i] <- 2^a
}
}
}
data$FC <- FC
有人能让我知道一种更聪明的方法来生成数据,比如使用apply或其他功能吗?谢谢你教我!
答案 0 :(得分:3)
没有任何循环或if
ifelse
和类似:
data$FC<-sign(df$log2FC)*2^abs(df$log2FC)