在大众图书馆中使用FitDisr

在大众图书馆中使用FitDisr,r,R,我正在尝试使用FitDisr函数,并且已经阅读了演练“用R拟合分布”。我可以使用“虚拟数据”遵循概述的示例,但当我尝试使用此函数运行实际数据时,问题就出现了。 我相信问题是由于我的数据中存在标题,因为我经常会遇到相同的错误。例如,如果我运行我的数据(有标题的两列),则第二列的到: fitdistr(data$col2,"gamma") 'x' must be a non-empty numeric vector' 我尝试过从文件中删除头并在所有数据上尝试该函数(未绑定),这也导致了相同的

我正在尝试使用FitDisr函数,并且已经阅读了演练“用R拟合分布”。我可以使用“虚拟数据”遵循概述的示例,但当我尝试使用此函数运行实际数据时,问题就出现了。 我相信问题是由于我的数据中存在标题,因为我经常会遇到相同的错误。例如,如果我运行我的数据(有标题的两列),则第二列的到:

fitdistr(data$col2,"gamma")   
'x' must be a non-empty numeric vector'
我尝试过从文件中删除头并在所有数据上尝试该函数(未绑定),这也导致了相同的错误

接下来,我尝试删除标头,并在数据文件中只包含要运行函数的数据列。这确实运行正常

请注意,对于我的数据,第二列是我感兴趣的内容。但是我使用了第一列数据将第二列排序为20个不同的组,所以我确实需要数据集中的第一列。我可以很容易地删除标题并在单独的代码中运行FitDisr()(因为到目前为止我一直使用标题来调用列),但我看不出如何在仅使用一列数据的情况下运行此函数,并且仍然可以正确地对该数据进行装箱。我的第一反应是将数据存储在excel中,然后通过函数运行20个不同的、1列的数据集。这似乎很乏味,因此,对于如何在数据集完好无损的情况下执行此功能的任何提示,我都将不胜感激

根据要求,以下是我的数据样本:

> dput(head(Diam_Str))
structure(list(Diameter = c(0.03, 0.05, 0.05, 0.05, 0.05, 0.05
), Strength = c(0.2, 0.2, 1.5, 0.5, 0.6, 0.3)), .Names = c("Diameter", 
"Strength"), row.names = c(NA, 6L), class = "data.frame")

根据直径大小,我有20组。对于每一组,我都看到了优势的分布

看起来数据集的第一行是作为数据而不是标题读入的,当您尝试对整个列运行FitDisr时,它将其视为字符向量而不是数字

如果您正在使用read.csv或类似工具读取数据,请尝试添加该选项 标题=T

data = read.csv("file.txt", header=T)
您可以通过以下方式验证列是否为数值向量:

class(data$col2)
如果这是字符类型,那么输入文件中的某个地方可能有一个错误的值

如果你认为你的数据还可以,你可以试试

fitdistr(as.numeric(data$col2),"gamma")

任何不正确的值都将替换为NA的

看起来数据集的第一行是作为数据而不是标题读入的,当您尝试在整个列上运行FitDisr时,它将其视为字符向量而不是数字

如果您正在使用read.csv或类似工具读取数据,请尝试添加该选项 标题=T

data = read.csv("file.txt", header=T)
您可以通过以下方式验证列是否为数值向量:

class(data$col2)
如果这是字符类型,那么输入文件中的某个地方可能有一个错误的值

如果你认为你的数据还可以,你可以试试

fitdistr(as.numeric(data$col2),"gamma")

任何不正确的值都将被NA替换

您可以使用
dput(head(yourdat))
在问题中添加数据样本吗?数据的细节似乎是问题的核心……您能否使用
dput(head(yourdat))
将数据样本添加到问题中?数据的细节似乎是问题的核心,“.as.numeric”似乎为我澄清了这一点。谢谢
read.csv(file,header=TRUE)
的第二个参数是多余的。这是默认值。如果在本应为数字的内容中有一个字符值,则该类将不是“character”,而是“factor”,因为默认情况下stringsAsFactor为TRUE
typeof
然后将返回
integer
,这将产生误导,但这是因子向量的
typeof
。最好的办法是使用colClasses,“as.numeric”似乎为我澄清了这一点。谢谢
read.csv(file,header=TRUE)
的第二个参数是多余的。这是默认值。如果在本应为数字的内容中有一个字符值,则该类将不是“character”,而是“factor”,因为默认情况下stringsAsFactor为TRUE
typeof
然后将返回
integer
,这将产生误导,但这是因子向量的
typeof
。最好的办法是使用colclass。