在Matrix上使用apply

时间:2013-12-20 05:05:47

标签: r apply

我正在尝试将函数应用于32列。我有一个名为nfl_data的32X32矩阵,它是从Excel读入的。似乎apply函数将能够将函数应用于所有列。我正在尝试添加列的值并除以13,然后取减少列的平均值。这是我的代码:

x <- solve(nfl_data)
rm <- apply(x, 2, function(i) round((1/13)*(sum(nfl_data[,i])) + mean(x[,i]),digits=2))

我收到错误:

  

.subset(x,j)中的错误:只有0可以与负下标混合

另外,当我使用str(rm)时,我得到:

  

num [1:32] NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN ...

我该怎么做才能得到错误然后实际上有数值?

1 个答案:

答案 0 :(得分:1)

如果不查看您的数据,我会模拟下面的数据并提供一个解决方案。对于在您的OP中使用apply的错误,我认为您可能同时拥有正面和负面指数。

# simulate the dataset:
nfl_data = rnorm(n=32*32, mean=4, sd=0.5)  
nfl_data = matrix(nfl_data, nr=32, nc=32)
head(nfl_data)

# your codes:
x <- solve(nfl_data)
myfun = function(i) round( (1/13)*(sum(nfl_data[,i])) + mean(x[,i]), digits=2 )

# alternative way:
rm = numeric(32)
for (i in 1:32){
  rm[i]=myfun(i)
}

# check results:
rm