2015-08-28 128 views

回答

5

实际上,你可以很直接相减,但你需要提供第一行作为list

mydf - as.list(mydf[1, ]) 
# C1 C2 C3 
# 1 0 0 0 
# 2 1 2 -5 
# 3 4 -1 2 
# 4 6 -3 -1 

## OR 
mydf - c(mydf[1, ]) 
2

我们可以复制的第一行创建长度相同,然后做差价。

df1-df1[1,][col(df1)] 
# C1 C2 C3 
#1 0 0 0 
#2 1 2 -5 
#3 4 -1 2 
#4 6 -3 -1 

或者另一种选择是调换(t)数据集,得到的差异,又转了,这可能是低效率的

t(t(df1)- unlist(df1[1,])) 
#  C1 C2 C3 
#[1,] 0 0 0 
#[2,] 1 2 -5 
#[3,] 4 -1 2 
#[4,] 6 -3 -1 
+1

这里是一个+1,但这实际上是杀毒作用,据我所知。只需将第一行作为“列表”替代...... – A5C1D2H2I1M1N2O1R2T1

+0

@AnandaMahto你是对的。我没有想到'list'方法。 – akrun