1

我在R中的“for循环”中保存一系列向量(矩阵列)的问题。实际上,我想计算矩阵中一些向量(行)的平均值。我运行“for循环”来找出我想为这些向量(列)的行找到平均值的向量(列)。我曾尝试使用“应用”功能,但我得到的是最后一个向量(列),因为我不知道如何在某处运行“for 循环”时保存这些先前的向量(列)。有人可以启发我吗?谢谢。`

column.name<-colnames(loadfile)
       for(i in 1:length(column.name)){
        char<- column.name[i]
        tmp<-agrep("HW", char, ignore.case = TRUE, max.distance = 0.1 )
        if(length(tmp) > 0){ 
        print(column.name[i])
        x<-i
        print(x)
    }
        loadfile$newcol<-apply(loadfile[x],1,mean)
    }

上面的代码,loadfile 是 data.frame,我创建了一个新列来保存 HW 列中每一行的平均值。我不介意显示我的代码。

4

1 回答 1

3

如果没有可重复的示例,很难为您提供帮助。在这里,我猜你想做什么。它是矢量化版本,因为agreprowMeans是矢量化的。

tmp <- agrep("HW", column.name, ignore.case = TRUE, 
             max.distance = 0.1 )
loadfile$newcol <- rowMeans(loadfile[,tmp])

编辑我添加了一个可重现的示例,它适用于矩阵和 data.frame:

mm <- matrix(1:25,ncol=5)
colnames(mm)  <- c(paste0('HW',1:3),paste0('NO',1:2))
loadfile <- as.data.frame(mm)
column.name <- colnames(loadfile)
tmp <- agrep("HW", column.name, ignore.case = TRUE, 
             max.distance = 0.1 )
loadfile$newcol <- rowMeans(loadfile[,tmp])
于 2013-06-08T23:51:33.283 回答