我有一个数据框
x <- data.frame(id=letters[1:3],val0=c(100,200,300),val1=c(400,500,600),val2=c(700,800,900))
我想将奇数列与特定数字n1(比方说)和偶数列除以另一个数字n2(比如说)。所以,我想要的结果是:
>n1<-2
>n2<-5
id val0 val1 val2
a 50 80 350
b 100 100 400
c 150 120 450
有人可以建议我怎么做吗?
感谢。
答案 0 :(得分:2)
您可以使用函数seq()
生成列号的值,然后对这些列进行子集化。对于偶数列,以2开头,对于奇数星为3,然后将所选列替换为相同的选定列,除以您感兴趣的数字。
x[,seq(2,ncol(x),2)]<-x[,seq(2,ncol(x),2)]/n1
x[,seq(3,ncol(x),2)]<-x[,seq(3,ncol(x),2)]/n2
答案 1 :(得分:0)
稍微伪装for
循环:
x[] <- lapply(seq_len(ncol(x)), function(i) x[, i]/ifelse(i%%2, 2, 5))
只是为了踢:
x[] <- lapply(seq_len(ncol(x)), function(i) x[, i]/if(i%%2) 2 else 5)