indexing a matrix in R

indexing, matrix, r

Solution

First, give the change factor a value:

change <- 1

Now, here is how to create an index:

# one approach to subsetting is to create a logical vector: 
jan.idx <- datacl$Month == 1

# alternatively the which function returns numeric indices:
jan.idx2 <- which(datacl$Month == 1)

If you want just the subset of data from January,

jandata <- datacl[jan.idx,]
transformed.jandata <- transform(jandata, Temp = Temp + change) 

To keep the entire data frame, but only add the change factor to Jan temps:

datacl$Temp[jan.idx] <- datacl$Temp[jan.idx] + change

Problem

A novice R user here. So i have a data set formated like: ``` Date Temp Month 1-Jan-90 10.56 1 2-Jan-90 11.11 1 3-Jan-90 10.56 1 4-Jan-90 -1.67 1 5-Jan-90 0.56 1 6-Jan-90 10.56 1 7-Jan-90 12.78 1 8-Jan-90 -1.11 1 9-Jan-90 4.44 1 10-Jan-90 10.00 1 ``` In R syntax: ``` datacl <- structure(list(Date = structure(1:10, .Label = c("1990/01/01", "1990/01/02", "1990/01/03", "1990/01/04", "1990/01/05", "1990/01/06", "1990/01/07", "1990/01/08", "1990/01/09", "1990/01/10"), class = "factor"), Temp = c(10.56, 11.11, 10.56, -1.67, 0.56, 10.56, 12.78, -1.11, 4.44, 10), Month = c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L)), .Names = c("Date", "Temp", "Month"), class = "data.frame", row.names = c(NA, -10L)) ``` i would like to subset the data for a particular month and apply a change factor to the temp then save the results. so i have something like ``` idx <- subset(datacl, Month == 1) # Index results[idx[,2],1] = idx[,2]+change # change applied to only index values ``` but i keep getting an error like ``` Error in results[idx[, 2], 1] = idx[, 2] + change: only 0's may be mixed with negative subscripts ``` Any help would be appreciated.

Original source