在r数据帧中反转偶数行的符号

And*_*rew 4 r dataframe

我有一个包含10个项目的数据框,我想否定偶数行.我想出了这个怪物:

change_even <- data.frame(val=runif(10))
change_even$val[row(  as.matrix(change_even[,'val']) ) %% 2 == 0 ] <- -change_even$val[row(  as.matrix(change_even[,'val']) ) %% 2 == 0 ]
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?

nic*_*ola 8

您只需使用回收:

change_even$val*c(1,-1)
#[1]  0.1077468 -0.5418167  0.8319609 -0.7230043  0.6649786 -0.7232669
#[7]  0.2677659 -0.4035824  0.6880934 -0.5600653
Run Code Online (Sandbox Code Playgroud)

(由于没有设置种子,因此值不可重现;但是可以清楚地看到交替的符号).