1

次の列名と19行のデータフレームがあります

> [1] "X12C.Signal_Grn"    "X12C.Signal_Red"    "X11P.Signal_Grn"   
> [4] "X11P.Signal_Red"    "X7P_.A..Signal_Grn" "X7P_.A..Signal_Red"
> [7] "X8P.Signal_Grn"     "X8P.Signal_Red"     "X9P.Signal_Grn"    
>[10] "X9P.Signal_Red"     "X10PA.Signal_Grn"   "X10PA.Signal_Red"  
>[13] "X6PB.Signal_Grn"    "X6PB.Signal_Red"    "X12P.Signal_Grn"   
>[16] "X12P.Signal_Red"    "X5P.Signal_Grn"     "X5P.Signal_Red"    
>[19] "X9P2C15.Signal_Grn" "X9P2C15.Signal_Red" "X42Pa.Signal_Grn"  
>[22] "X42Pa.Signal_Red"  

クラスはdata.frameです。問題は、元の参照のすべての行に対して、列 1 と 2 、次に 3 と 4 、次に 5 と 6 などの log 2 比率を含む新しいデータフレームを作成する方法です。

4

1 に答える 1

3

このソリューションはそれほどきれいではありませんが、必要なことは実行します。

# Generate some random data with column names on the same format as you have
df <- data.frame(matrix(runif(19*22), 19, 22))
names(df) <- sprintf("%s.Signal_%s", rep(LETTERS[1:11], each=2),
                                     rep(c("Grn", "Red"), 11))
# Calculate log2 ratios
l2r <- as.data.frame(lapply(1:(ncol(df)/2), function(i) log2(df[2*i]/df[2*i-1])))
# Give the columns comprehensive names
names(l2r) <- sub("Signal_Red", "log2ratio", names(df)[seq(2, ncol(df), 2)])
于 2012-09-28T15:18:32.810 に答える