1

我有一个数据框

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

有人可以建议我怎么做吗?

谢谢。

4

2 回答 2

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
于 2013-08-14T09:26:54.703 回答
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)
于 2013-08-14T10:07:56.720 回答