我有一个问题是在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列中每行的平均值。我不介意展示我的代码。
答案 0 :(得分:3)
如果没有可重复的示例,很难帮助您。在这里我想你想做什么。它是矢量化版本,因为agrep
和rowMeans
是矢量化的。
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])