与lapply分配?

时间:2016-02-25 10:19:08

标签: r lapply

为什么这不起作用?

data1<-data.frame(x=1:5,y=2:6)
onevector<-c(1,2)
lapply(1:length(onevector),function(i) {data1[,i]<-data1[,i]-onevector[i]})

data1保持不变......

我尝试将一个元素减去我的数据集data1的每一列,我想这样做:

data1[,1]<- data1[,1] -1 (which is working out of the lapply)
data1[,2]<- data1[,2] -2

我的问题更多是关于理解lapply之间的区别,而不是另一种方法来实现它,所以如果你想回答,请详细说明你的答案。

1 个答案:

答案 0 :(得分:1)

data1<-data.frame(x=1:5,y=2:6)
min<-c(1,2)
s <- sapply(1:length(min),function(x) rep(x,dim(data1)[1]))
data1 <- data1-s

这将创建一个新的矩阵,它由你的min矢量值的列组成。从data1中减去这将产生结果。

或者通过docendo discimus使用更优雅的解决方案:

data1 <- as.data.frame(Map("-", data1, mn))