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

时间:2015-01-13 22:49:20

标签: r

我有这样的数据:

> 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或其他功能吗?谢谢你教我!

1 个答案:

答案 0 :(得分:3)

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

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