【发布时间】:2016-01-27 11:52:12
【问题描述】:
我有以下数据集:
foo=data.frame(index=rep(1:10,3),
type=rep(c("A","B","C"),each=10),
ping=rnorm(30),
pong=runif(30))
我想将index==5 和type=="B" 的ping 和pong 列的值减去ping 和pong 的整个列。
这有效:
vec=matrix(subset(foo,index==5 & type=="B",select=ping:pong),2,1)
foo[,c("ping","pong")]=foo[,c("ping","pong")]-vec
但是,令我惊讶的是,我必须将 vec 指定为列向量,而不是行向量。我原以为我需要将相同的行向量减去foo 的所有(相似的子集)行。你能解释这是为什么吗?此外,如果可以使用更简单或更简洁的代码获得相同的结果,请告诉我。
【问题讨论】: