我有一个包含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)
有没有更好的办法?
您只需使用回收:
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)
(由于没有设置种子,因此值不可重现;但是可以清楚地看到交替的符号).