根据数据矩阵中的另一列生成新列

Generate a new column based on another column in the data matrix

我有这样的数据:

> 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 或其他函数?谢谢你教我!

没有任何循环或 if ifelse 和类似的:

data$FC<-sign(df$log2FC)*2^abs(df$log2FC)