在“for循环”中存储一系列向量

时间:2013-06-08 23:30:49

标签: r

我有一个问题是在R中的“for循环”中保存一系列向量(矩阵列)。实际上,我想计算矩阵中某些向量(行)的平均值。我运行“for循环”找出向量(列)我想找到那些向量(列)行的平均值。我曾尝试使用“apply”函数,但我得到的是最后一个向量(列)因为我不知道如何在某个地方运行“for loop”时保存那些先前的向量(列)。任何人都可以开导我吗?谢谢。     `

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列中每行的平均值。我不介意展示我的代码。

1 个答案:

答案 0 :(得分: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])