I have a number of files containing anywhere from a few dozen to a few
thousand integers, one per record.
The statement "refdata18
read.csv("K:\\MerchantData\\RiskModel\\Capture.Week.18.csv", header
TRUE,na.strings="")" works fine, and if I type refdata18, I get
the integers
displayed, one value per record (along with a record number). However, when
I try " fitdistr(refdata18,"negative binomial")", or
hist.scott(refdata18,
prob = TRUE), I get an error:
Error in fitdistr(refdata18, "negative binomial") :
'x' must be a non-empty numeric vector
Or
Error in hist.default(x, nclass.scott(x), prob = prob, xlab = xlab, ...) :
'x' must be numeric
How can it not recognise integers as numbers?
Thanks
Ted
--
View this message in context:
http://www.nabble.com/Why-isn%27t-R-recognising-integers-as-numbers--tp19600308p19600308.html
Sent from the R help mailing list archive at Nabble.com.
best guess is that they are not integers. Do 'str' on your object and it probably says they are 'factors'. This is probably due to some of your data being non-numeric. Try using 'colClasses' on read.csv to specify what the column should contain. Also try "scan" after skipping the first record if it is a header:> scan("", what=0L) # bad input after specifying integer1: 1 2 3 4 5: 1 v 5: Error in scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : scan() expected 'an integer', got 'v'> scan("", what=0L) # good input1: 1 2: 2 3: 3 4: Read 3 items [1] 1 2 3>On Sun, Sep 21, 2008 at 9:01 PM, Ted Byers <r.ted.byers@gmail.com> wrote:> > I have a number of files containing anywhere from a few dozen to a few > thousand integers, one per record. > > The statement "refdata18 > read.csv("K:\\MerchantData\\RiskModel\\Capture.Week.18.csv", header > TRUE,na.strings="")" works fine, and if I type refdata18, I get the > integers > displayed, one value per record (along with a record number). However, > when > I try " fitdistr(refdata18,"negative binomial")", or hist.scott(refdata18, > prob = TRUE), I get an error: > > Error in fitdistr(refdata18, "negative binomial") : > 'x' must be a non-empty numeric vector > Or > Error in hist.default(x, nclass.scott(x), prob = prob, xlab = xlab, ...) : > 'x' must be numeric > > How can it not recognise integers as numbers? > > Thanks > > Ted > -- > View this message in context: > http://www.nabble.com/Why-isn%27t-R-recognising-integers-as-numbers--tp19600308p19600308.html > Sent from the R help mailing list archive at Nabble.com. > > ______________________________________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html<http://www.r-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. >-- Jim Holtman Cincinnati, OH +1 513 646 9390 What is the problem that you are trying to solve? [[alternative HTML version deleted]]
on 09/21/2008 08:01 PM Ted Byers wrote:> I have a number of files containing anywhere from a few dozen to a few > thousand integers, one per record. > > The statement "refdata18 > read.csv("K:\\MerchantData\\RiskModel\\Capture.Week.18.csv", header > TRUE,na.strings="")" works fine, and if I type refdata18, I get the integers > displayed, one value per record (along with a record number). However, when > I try " fitdistr(refdata18,"negative binomial")", or hist.scott(refdata18, > prob = TRUE), I get an error: > > Error in fitdistr(refdata18, "negative binomial") : > 'x' must be a non-empty numeric vector > Or > Error in hist.default(x, nclass.scott(x), prob = prob, xlab = xlab, ...) : > 'x' must be numeric > > How can it not recognise integers as numbers? > > Thanks > > Ted'refdata18' is a data frame and the two functions are expecting a numeric vector. If you use: fitdistr(refdata18[, 1], "negative binomial") or hist(refdata18[, 1]) you should get a suitable result, presuming that the first column in the data frame is a numeric vector. Use: str(refdata18) to get a sense for the structure of the data frame, including the column names, which you could then use, instead of the above index based syntax. HTH, Marc Schwartz