使用循环填充data.frame,级别集不同

使用循环填充data.frame,级别集不同,r,R,我是R方面的新手,这个问题可能非常简单。 我用R来拟合一些数据的伽马分布,这些数据在“模型集”数据集中 我想创建一个新的数据框,在这个数据框中,我可以使用循环列出某些观测的伽马分布系数 这就是我所做的: 我用我需要的系数创建了一个向量 Format<- c('10x2', '10x3','10x7', '17x15', '17x7', '20x2', '20x3','25x4','4 column','5 column','7x7','DPS','FP') 但我得到了这个错误:

我是R方面的新手,这个问题可能非常简单。 我用R来拟合一些数据的伽马分布,这些数据在“模型集”数据集中

我想创建一个新的数据框,在这个数据框中,我可以使用循环列出某些观测的伽马分布系数

这就是我所做的:

我用我需要的系数创建了一个向量

Format<- c('10x2', '10x3','10x7', '17x15', '17x7', '20x2', '20x3','25x4','4 column','5 column','7x7','DPS','FP')    
但我得到了这个错误:

Error in Ops.factor(modelset$Format, GammaShape$Format[i]) : level sets of factors are different    

尽管水平是一样的

嗯,我的建议是双重的。首先,在创建data.frame时不要使用因子;如果你真的需要它们,你可以考虑事后处理。因此:

GammaShape <- data.frame(Format, Shape, stringsAsFactors = FALSE)

GammaShape谢谢!,这部分解决了一些问题。但是现在它只填充了第一行的形状,它返回给我,在FitDisr中,x必须是一个非空的数值向量。我假设你的意思是它填充了第一行,然后抛出一个错误,而不是它在抛出警告时重复写入第一行?看看我2岁时你传递给x的物体。它是非空向量吗?如果不让数据集可用,就很难进行具体诊断。不,它先填充第一个数据集,然后用0.0000Plus填充其余数据集,我有一条警告消息。形状[i]
for (i in GammaShape$Shape) { GammaShape$Shape[i] = coef(fitdistr(modelset$ETTime[which(modelset$Format == GammaShape$Format[i])]/1000))}    
Error in Ops.factor(modelset$Format, GammaShape$Format[i]) : level sets of factors are different    
GammaShape <- data.frame(Format, Shape, stringsAsFactors = FALSE)
Format <- c('10x2', '10x3', '10x7', '17x15', '17x7', '20x2', '20x3',
            '25x4', '4 column', '5 column', '7x7', 'DPS', 'FP')

Shape <- numeric(length(Format))

for(i in seq_along(Shape)){
     Shape[i] <- coef(fitdistr(modelset$ETTime[which(modelset$Format == Format[i])]/1000))
}

GammaShape <- data.frame(Format, Shape, stringsAsFactors = FALSE)