我正在尝试将函数应用于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 ...
我该怎么做才能得到错误然后实际上有数值?
答案 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