【问题标题】:Use a FOR loop to run function over each column in r使用 FOR 循环在 r 中的每一列上运行函数
【发布时间】:2020-09-11 18:28:10
【问题描述】:

我有几列数据,我想使用 for 循环(特别是 for 循环。请不要回答不涉及 for 循环的答案)为矩阵中的每一列运行一个函数。

x <- runif(10,0,10)
y <- runif(10,10,20)
z <- runif(10,20,30)

tab <- cbind(x,y,z)


             x        y        z
 [1,] 9.5262742 16.22999 21.93228
 [2,] 5.8183264 14.53771 21.81774
 [3,] 3.9509342 17.36694 22.46594
 [4,] 3.0245614 19.46411 25.80411
 [5,] 5.0284351 13.89636 21.61767
 [6,] 3.0291715 17.50267 26.28110
 [7,] 8.4727471 16.77365 27.60535
 [8,] 3.3816903 15.23395 22.01265
 [9,] 0.3182083 13.97575 29.25909
[10,] 2.6499290 16.71129 27.05160



for (i in 1:ncol(tab)){
     print(mean(i))
} 

我对 R 几乎不熟悉,并且很难找到专门使用 for 循环来运行函数并按列输出结果的解决方案。

【问题讨论】:

  • 试试print(mean(tab[, i]))。您必须将函数传递给 column,而不是列 index

标签: r


【解决方案1】:

好吧,严格使用 for 循环,我认为这会做你想做的事!

x <- runif(10,0,10)
y <- runif(10,10,20)
z <- runif(10,20,30)

tab <- cbind(x,y,z)

for (i in 1:ncol(tab)){
     print(mean(tab[, i]))
} 

您需要使用[row, column] 来索引矩阵。当您要选择特定列的所有行(这是您的情况)时,只需将行字段留空。这就是为什么你必须使用[, i],其中i 是你的索引。

【讨论】:

    猜你喜欢
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-22
    • 2018-12-27
    • 2015-09-13
    相关资源
    最近更新 更多