创建一个新的数据框,在现有的一个上应用一个函数

时间:2011-10-05 10:21:26

标签: r dataframe apply subtraction

我正在尝试使用包含成对数据的现有数据框来创建新数据框

TargetID    A1           A2           B1      B2     
cg00000108 0.94483140 0.959417300 0.94427000 0.956393400 
cg00000292 0.83331720 0.836168900 0.75568530 0.869691000 
cg00001594 0.00000000 0.009319287 0.00318779 0.001852309 
cg00003298 0.01775547 0.034981820 0.03380106 0.116663900 
cg00003345 0.55442110 0.542106600 0.54762020 0.624028200 
cg00004055 0.10287610 0.107147500 0.09293073 0.106663000

我们的想法是获得一个数据框,其中包含对之间的减法结果,因此获得最后三个最终列

TargetID A1-A2 B1-B2

我试着向我们申请但我在R中没有足够的编程技巧来获得如何对函数开始减法的说法

提前致谢

2 个答案:

答案 0 :(得分:1)

简单地说:

with(d, data.frame(TargetID, A1-A2, B1-B2))

其中d是您的数据框。

答案 1 :(得分:0)

这是一种使用R的索引功能和矢量化操作的方法。生成两个与要减去的列对应的索引序列。这是一个例子:

#5 row by 10 column matrix
m <- matrix(rnorm(50), ncol = 10)

#sequence one for columns 1,3,5,7,9
s1 <- seq(1,ncol(m),2)
#sequence two for columns 2,4,6,8,10
s2 <- seq(2,ncol(m),2)

#Create new matrix
m2 <- m[, s1] - m[, s2]

#apply some column names
colnames(m2) <- paste("x", s1, s2, sep = "_")

刚才我意识到我之前曾问过几乎相同的问题:Operate on multiple columns at once