将变量保存在 R 中的矩阵中
Save variables in a matrix in R
是否可以在 R 中存储变量..
我必须计算 10*324 fitdist
,这个函数的每个输出都必须存储在上面大小的矩阵中?这在 R 中可能吗?
如果是那怎么办,我完全迷路了?
所以我尝试创建一个简单的示例
norm_dist <- as.data.frame(matrix(nrow=3,ncol=3))
data(iris)
for(i in 1:3)
{
for(j in 1:3)
{
print(i)
print(j)
if(j==1)
{
element = fitdist(data =iris$Petal.Width[1:50*i], distr = "norm")
norm_dist[i,j] = element
}
if(j==2)
{
element = fitdist(data =iris$Petal.Length[1:50*i], distr = "norm")
norm_dist[i,j] = element
}
if(j==3)
{
element = fitdist(data =iris$Sepal.Length[1:50*i], distr = "norm")
norm_dist[i,j] = element
}
}
}
但是我收到这个错误
Error in `[<-.data.frame`(`*tmp*`, i, j, value = list(estimate = c(0.867771222640304, :
replacement element 4 is a matrix with 2 rows, needs 1
我不确定我是否理解它的意思...
您可能需要查看 "Value" 部分下的 ?fitdist
文档。它提到了函数的输出,它是一个包含几个组件的列表。
您想将这些值中的哪一个分配给 norm_dist
?例如,如果你想要对数似然,你可以使用 norm_dist[i,j] = element$loglik
如果要存储整个对象,则需要列表而不是 data.frame,例如
norm_dist_res <- list()
for(i in 1:10)
{
for(j in 1:324)
{
norm_dist_res[[paste0(i,"-",j)]] <- fitdist(data=g_all_p$data[1:8000*i, j], distr="norm")
}
}
是否可以在 R 中存储变量..
我必须计算 10*324 fitdist
,这个函数的每个输出都必须存储在上面大小的矩阵中?这在 R 中可能吗?
如果是那怎么办,我完全迷路了?
所以我尝试创建一个简单的示例
norm_dist <- as.data.frame(matrix(nrow=3,ncol=3))
data(iris)
for(i in 1:3)
{
for(j in 1:3)
{
print(i)
print(j)
if(j==1)
{
element = fitdist(data =iris$Petal.Width[1:50*i], distr = "norm")
norm_dist[i,j] = element
}
if(j==2)
{
element = fitdist(data =iris$Petal.Length[1:50*i], distr = "norm")
norm_dist[i,j] = element
}
if(j==3)
{
element = fitdist(data =iris$Sepal.Length[1:50*i], distr = "norm")
norm_dist[i,j] = element
}
}
}
但是我收到这个错误
Error in `[<-.data.frame`(`*tmp*`, i, j, value = list(estimate = c(0.867771222640304, :
replacement element 4 is a matrix with 2 rows, needs 1
我不确定我是否理解它的意思...
您可能需要查看 "Value" 部分下的 ?fitdist
文档。它提到了函数的输出,它是一个包含几个组件的列表。
您想将这些值中的哪一个分配给 norm_dist
?例如,如果你想要对数似然,你可以使用 norm_dist[i,j] = element$loglik
如果要存储整个对象,则需要列表而不是 data.frame,例如
norm_dist_res <- list()
for(i in 1:10)
{
for(j in 1:324)
{
norm_dist_res[[paste0(i,"-",j)]] <- fitdist(data=g_all_p$data[1:8000*i, j], distr="norm")
}
}