R software, making boxplot, need finite 'ylim' value - r

> B<-subset(olympic,sport=="basketball")
> BM<-subset(B,sex=="M"
+ )
> boxplot(BM$height)
Error in plot.window(xlim = xlim, ylim = ylim, log = log, yaxs = pars$yaxs):
need finite 'ylim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
This is what happened when I try to plot the graph. I'm new to R.

Just add ylim=c(0,300)) to your code

I see nothing wrong in the command though it can be shortened to:
> BM <- subset(olympic,sport=="basketball" & sex == 'M')
> boxplot(BM$height)
The error that you are getting might be because of the fact that data.frame BM has zero rows.
I would recommend you to please check the case of values for sport (i.e. whether in the dataset, 'Basketball' is present and you are searching for 'basketball')

Related

Approx(): Need at least two non-NA values to interpolate R

I am trying to use nnetar for some time series forecasting, and running into an issue when the data has repeating values (i.e. the same counts observed in a time period). To reproduce the error I have created a list of values and replaced the first 10 values with a 0:
dummy.ls <- runif(n=80)
for(i in 1:10)
dummy.ls[i] <- 0
fit <- nnetar(dummy.ls, lambda=0)
When running the nnetar function I receive the following error:
Error in approx(idx, x[idx], tt, rule = 2) :
need at least two non-NA values to interpolate
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
I see similar errors in other questions, but unsure how to avoid the error?

Plotting data in R: Error in plot.window(...) : need finite 'xlim' values

Trying to plot some data in R - I am a basic user and teaching myself. However, whenever I try to plot, it fails, and I am not sure why.
> View(Pokemon_BST)
> Pokemon_BST <- read.csv("~/Documents/Pokemon/Pokemon_BST.csv")
> View(Pokemon_BST)
> plot("Type_ID", "Gender_ID")
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
2: In xy.coords(x, y, xlabel, ylabel, log) : NAs introduced by coercion
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
5: In min(x) : no non-missing arguments to min; returning Inf
6: In max(x) : no non-missing arguments to max; returning -Inf
This is my code, but I thought it might be an issue with my .csv file? I have attributed numbers to the "Type_ID" and "Gender_ID" columns. Type_ID has values between 1-20; Gender_ID has 1 for male, 2 for female, and 3 for both. I should state that both ID columns are just made of numeric values. Nothing more.
I then tried using barplot function. This error occurred:
> barplot("Gender_ID", "Type_ID")
Error in width/2 : non-numeric argument to binary operator
In addition: Warning message:
In mean.default(width) : argument is not numeric or logical: returning NA
There are no missing values, no characters within these columns, nothing that SHOULD cause an error according to my basic knowledge. I am just not sure what is going wrong.
To me it seems as you are giving the plot function the wrong inputs.
For the x and y axis plot expects numeric values and you are only providing a single string. The function does not know that the "Type_ID" and "Gender_ID" come from the Pokemon_BST data frame.
To reach your data you must tell R where the object comes from. You do this by opening square brackets behind the object you want to access and write the names of the objects to be accessed into it.
View(Pokemon_BST)
Pokemon_BST <- read.csv("~/Documents/Pokemon/Pokemon_BST.csv")
# Refer to the object
plot(Pokemon_BST["Type_ID"], Pokemon_BST["Gender_ID"])
# Sould also work now
barplot(Pokemon_BST["Gender_ID"], Pokemon_BST["Type_ID"])
See also here for a introduction on subsetting in R
The problem is how you're passing the values to the plot function. In your code above, "Gender_ID" is just some string and the plot function doesn't know what to do with that. One way to plot your values is to pass the vectors Pokemon_BST$Gender_ID and Pokemon_BST$Type_ID to the function.
Here's a sample dataframe with the plot you were intending.
Pokemon_BST <- data.frame(
Type_ID = sample(1:20, 10, replace = TRUE),
Gender_ID = sample(1:3, 10, replace = TRUE))
plot(Pokemon_BST$Gender_ID, Pokemon_BST$Type_ID)

Problems with kriging function in R

I have a dataframe named as kef, consisted of 512 rows, and the fields x, y (referring to coordinates) and v (refering to a certain numeric value for each cell).
I also have a map layer named as grecia.map, loaded in R through the readOGR command consisted of a polygon which represents a certain area.
While running the following command:
kriged <- kriging(kef$x, kef$y, kef$v, polygons = grecia.map, pixels=30000)
I receive the following error messages:
Error in lm.fit(x, y, offset = offset, singular.ok = singular.ok, ...) :
0 (non-NA) cases
In addition: Warning messages:
1: In max(x) : no non-missing arguments to max; returning -Inf
2: In min(x) : no non-missing arguments to min; returning Inf
3: In max(y) : no non-missing arguments to max; returning -Inf
4: In min(y) : no non-missing arguments to min; returning Inf
Well, I managed to correct the issue. The problem had to do with the data. the coordinates along with the sample values were messed and apparently there was not any spatial logic with the data.
After importing a correct dataset the function worked properly so I guess that this question could be deleted.
Thank you

Plot graphs in R software

In using R software I face the error term which is:
dmodel1=list()
for(i in 1:12){
sun.st = i
data1 = fdata(file1, nd = nd, sun.st)
d1= ffit(data1,order=2)
dmodel1[[i]]=d1
fplot(d1, plot.year,label=colnames(data1)[2],ylab=1)
cat(colnames(data1)[2], "\n")
}
the error is:
Error in plot.window(...) : need finite 'ylim' values
In addition: Warning messages:
1: In model.response(mf, "numeric") :
using type = "numeric" with a factor response will be ignored
2: In Ops.factor(y, z$residuals) : - not meaningful for factors
3: In Ops.factor(x[, 2], dataff1f) : - not meaningful for factors
4: In max(dataFF2[, 3], na.rm = TRUE) :
no non-missing arguments to max; returning -Inf
So, would you please help me to overcome this?
Thanks
Bah
Can you reproduce the error if you use some random values in your variables? Without the data is difficult to assess whether the data is somehow "corrupted" (or at least inadequate for what you want to do).

plot.window error in loop for R creating basic plots

I apologize for not generating pseudo data for this question, but I think the problems I am facing are basic to most non novice individuals on this site. I am attempting to create a loop that plots a scatterplot of x and y for each value of a z variable.
x=rnorm(n=50)
y=rnorm(n=50)
z<-rep(c(1,2,3,4,5),10)
dataset <-cbind(x,y,z)
Dataset<-as.data.frame(dataset)
attach(Dataset)
jpeg()
z <-Dataset$z[1:5]
for(i in 1:5) {
y<-y[z==i]
x <-x[z==i]
ARMAXpath<-file.path("C:", "Desktop", paste("myplot_", z[i], ".jpg", sep=""))
jpeg(file = ARMAXpath)
TheTitle = paste("Scatter Plots", z[i])
plot.new()
plot.window(xlim=c(0,1), ylim=c(5,10))
plot(y,x)
dev.off()
}
detach(Dataset)
No matter what I do I get the same plot.window error. I ran this code with and without attach. I ran it with and without plot.window. I also moved it in and outside the loop.
Error in plot.window(...) : need finite 'xlim' values
In addition: Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf
3: In min(x) : no non-missing arguments to min; returning Inf
4: In max(x) : no non-missing arguments to max; returning -Inf
My question is how do I generate plots of two time series by a third variable in my dataset (i.e. region) write the output to a file folder as I have poorly attempted to do above?
Why not: consolidate all three plot calls into:
plot(y,x, xlim=c(0,1), ylim=c(5,10))
Some alternative code, using #DWin's comment:
x=rnorm(n=50)
y=rnorm(n=50)
z<-rep(c(1,2,3,4,5),10)
Dataset<-data.frame(x=x,y=y,z=z)
my.plot <- function(x,y,z){
ARMAXpath<-file.path("C:", "Desktop", paste0("myplot_", z, ".jpg"))
jpeg(file = ARMAXpath)
plot(y,x, xlim=c(0,1), ylim=c(5,10))
dev.off()
}
by(Dataset, Dataset$z, function(d) my.plot(d$x,d$y,unique(d$z)))

Resources