[R] "invalid factor level, NA generated" error message help
arun
smartpink111 at yahoo.com
Mon Apr 7 13:33:44 CEST 2014
Hi,
May be this helps:
number_of_stations <- 3
label <- c("s1","s2","s3","s4")
label1 <- combn(label[1:number_of_stations],2)
label.i <- character(0)calc_distances <- function(z,a){ for(i in 1:z){lab.i <- paste(a[1,i],a[2,i],sep="-")
label.i <- c(label.i,lab.i)}
data.frame(label=label.i,stringsAsFactors=FALSE) }
calc_distances(number_of_stations,label1)
# label
#1 s1-s2
#2 s1-s3
#3 s2-s3
number_of_stations <- 5
label <- c("s1","s2","s3","s4" ,"s5")
label1 <- combn(label[1:number_of_stations],2 )
calc_distances(number_of_stations,label1)
#label
#1 s1-s2
#2 s1-s3
#3 s1-s4
#4 s1-s5
#5 s2-s3
#or
data.frame(label=apply(label1[,1:number_of_stations],2,paste,collapse="-"),stringsAsFactors=FALSE)
A.K.
Hi, I have read several pages and threads on this error message, but I haven't found one that solved my problem, so any help would be appreciated. As part of a much larger script, I am trying to generate a label column that has all possible combinations from a vector, such that for the vector c("s1","s2","s3") I would get a column
"s1-s2"
"s1-s3"
"s2-s3" I need the script to be imbedded within a for loop that is carrying out other functions, so here is the snip it of code that is relevant to this column number_of_stations <- 3
label <- c("s1","s2","s3","s4")
label <- combn(label[1:number_of_stations],2) #this script is designed to be run using various numbers of stations which will not always be the same as the number of labels
lable.i <- as.data.frame(NULL)
calc_distances <- function(z,a){ for(i in 1:z){lab.i <- gsub(" ","",paste(a[1,i],"-",a[2,i])) label.i <- as.data.frame(rbind(label.i,lab.i))} print(lable.i)}
calc_distances(number_of_stations,label) When I run that script, I get the following X.s1.s2.
1 s1-s2
2 3 Warning messages:
1: In `[<-.factor`(`*tmp*`, ri, value = "s1-s3") : invalid factor level, NA generated
2: In `[<-.factor`(`*tmp*`, ri, value = "s2-s3") : invalid factor level, NA generated So, my question is, why does it run on the first set, but have issues with the other sets? Also, If I extract this code from the for loop and run the gsub line separately for each combination, it works fine (e.g. gsub(" ","",paste(label[1,2],"-",label[2,2])) doesn't give me that error message). How do I solve this error? Thanks for the help
More information about the R-help
mailing list