R中for循环中的调用矩阵元素

问题描述 投票:0回答:2

我想做这样的事情:

我有许多看起来如下的矩阵:

head(cluster1,n=10)
      beg end      IBI len     durn  mean.isis SI
 [1,]   6   8       NA   3 0.109883 0.05494150  1
 [2,]  10  22 0.363067  13 0.350182 0.02918183  1
 [3,]  27  30 0.589205   4 0.128999 0.04299967  1
 [4,]  31  36 0.292974   6 0.048144 0.00962880  1
 [5,]  37  44 0.182525   8 0.227413 0.03248757  1
 [6,]  45  47 0.130840   3 0.063720 0.03186000  1
 [7,]  48  56 0.413761   9 0.182949 0.02286862  1
 [8,]  59  65 0.475499   7 0.192862 0.03214367  1
 [9,]  67  69 0.208579   3 0.027613 0.01380650  1
[10,]  70  74 0.116538   5 0.295098 0.07377450  1

head(cluster2,n=10)
      beg end       IBI len     durn   mean.isis SI
 [1,]   1   4        NA   4 0.011045 0.003681667  1
 [2,]  37  41 24.749159   5 0.037666 0.009416500  1
 [3,]  47  49  4.622307   3 0.008638 0.004319000  1
 [4,]  59  61  6.767432   3 0.008638 0.004319000  1
 [5,]  64  67  3.499121   4 0.012178 0.004059333  1
 [6,]  83  85  7.063805   3 0.007504 0.003752000  1
 [7,]  89  91  2.827788   3 0.015576 0.007788000  1
 [8,]  92  94  1.628137   3 0.007930 0.003965000  1
 [9,]  95  97  0.576744   3 0.008638 0.004319000  1
[10,] 103 105 10.000201   3 0.009204 0.004602000  1

我想创建一个for循环,在其中创建一个矩阵第5行值的平均值的列表。

mean(cluster1[,5])
[1] 0.2731692
mean(cluster2[,5])
[1] 0.01214404

它会给出这样的结果:

means(0.2731692,0.01214404)

我试图做的事情:

means=''
for(i in 1:100){names.append(mean(str('cluster'+i)[,5]))}

这似乎不像我希望的那样。

非常感谢您的帮助!

谢谢

r append
2个回答
1
投票

尝试这样的事情:

means <- numeric(length = 100)

for (i in seq_len(length.out = 100))
{
    means[i] <- mean(x = get(x = paste0("cluster", i))[, 5])
}

这将以以下格式返回向量:c(0.2731692,0.01214404, ...)。如果要用空格分隔的字符串,请执行以下操作:

paste0(means, collapse=" ")

希望这会有所帮助。


1
投票

您可以使用mget获取列表中的所有矩阵,然后获取第5列的mean

sapply(mget(paste0('cluster', 1:2)), function(x) mean(x[, 5]))

用您拥有的数字2矩阵替换1:2中的cluster

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.