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