In addition to what Ben and Jeff have said, I think you can simplify your function considerably. See these examples:
> substr( c('abc', 'abcd','abcde') , c(2,1,3), c(2,2,4)) [1] "b" "ab" "cd" > foo <- c('abc', 'abcd','abcde') > substr( foo , 1, nchar(foo)-2) [1] "a" "ab" "abc" > foo <- c('abc', 'abcd','abcde') > paste0('NSE/',foo) [1] "NSE/abc" "NSE/abcd" "NSE/abcde" I can't test my suggestions, but just from looking at your code, I don't think you need the two loops. function (snlcqn) { ## lneq <- c() ## not a good way to initialize URL <- "https://canmoney.in/Intraday%20scrip.xls" file.string <- tempfile() download.file(URL,file.string) IDT <- read_excel(file.string) leq <- IDT[,1] lneq <- substr( leq, 1, nchar(leq)-2) # for(i in 1:length(leq)){ # lneq[i] <- substr(leq[i],1,(nchar(leq[i])-2))} snlcqna <- paste0('NSE/', lneq) # for(j in 1:length(lneq)){ # snlcqna[j] <- paste("NSE/",lneq[j])} ## functions return the value of their last expression, so the return() statements are not necessary ## testing for FALSE does not need == "FALSE" # if(identical(snlcqn,snlcqna) == "FALSE"){ # return(snlcqna) } # # else { # return(snlcqn) } If (identical(snlcqn, snlcqna)) snlcqn else snlcqna } -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 Lab cell 925-724-7509 On 7/8/18, 6:48 AM, "R-help on behalf of Ben Tupper" <r-help-boun...@r-project.org on behalf of btup...@bigelow.org> wrote: Hi, You will be hard pressed to get helpful answers as you have not provided any way for list readers to replicate your data and code. Check out this https://rseek.org/?q=reproducible+example On the other hand, ... (1) I have a hunch that one place you are getting tripped up by your effort to treat IDT as a regular data.frame. In fact, read_excel(), I'm guessing from the readxl package, returns a tibble. When you subset a tibble like you have with... leq <- IDT[,1] ... you get a 1-column tibble... > leq # A tibble: 208 x 1 SymbolSeries <chr> 1 ACCEQ 2 ADANIENTEQ 3 ADANIPORTSEQ 4 ADANIPOWEREQ 5 AJANTPHARMEQ 6 ALBKEQ 7 AMARAJABATEQ 8 AMBUJACEMEQ 9 ANDHRABANKEQ 10 APOLLOHOSPEQ # ... with 198 more rows So, that may be part of the issue (but I'm not really sure if it causes the problem you identify). (2) Also another possible tripping point, when you prepend 'NSE/' to whatever lneq is supposed to be, you are using paste() without specifying the sep argument which defaults to a single space " ". If you want it to be something else then you have to explicitly set the value of sep. (3) Finally, you will have much better luck getting help if you configure your email client to send plain text to this list. Fancily formatted text is made un-fancy by the list-server software - which will mess up your posted code. That's why you keep getting ... [[alternative HTML version deleted]] ... at the tail end of your emails. Good luck! Ben > On Jul 8, 2018, at 8:37 AM, akshay kulkarni <akshay...@hotmail.com> wrote: > > dear members, > The mail is not showing the spaces between [192] "NSE/YESBANK" and [193] "NSE/ZEEL" ...Actually there is a lot of empty spaces between the two.....!!!!!! > > ________________________________________ > From: R-help <r-help-boun...@r-project.org> on behalf of akshay kulkarni <akshay...@hotmail.com> > Sent: Sunday, July 8, 2018 5:58 PM > To: R help Mailing list > Subject: [R] inconsistency in display of character vector.... > > dear members, > I have the following code to update the list of stocks: > > function (snlcqn) > { > lneq <- c() > URL <- "https://canmoney.in/Intraday%20scrip.xls" > file.string <- tempfile() > > download.file(URL,file.string) > > IDT <- read_excel(file.string) > > leq <- IDT[,1] > > for(i in 1:length(leq)){ > lneq[i] <- substr(leq[i],1,(nchar(leq[i])-2))} > > for(j in 1:length(lneq)){ > snlcqna[j] <- paste("NSE/",lneq[j])} > > if(identical(snlcqn,snlcqna) == "FALSE"){ > return(snlcqna) } > > else { > return(snlcqn) } > > } > snlcqn is the list of present stocks and snlcqna is the list of updated stocks. > The problem is the return object, instead of getting displayed in contiguous list, is getting displayed with lots of spaces...( I am using R on a LINUX RHEL AWS instance): > > [192] "NSE/YESBANK" > [193] "NSE/ZEEL" > > Why is this happening? How can I get the return object as a contiguous list? > Very many thanks for your time and effort... > yours sincerely, > AKSHAY M KULKARNI > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > Ben Tupper Bigelow Laboratory for Ocean Sciences 60 Bigelow Drive, P.O. Box 380 East Boothbay, Maine 04544 http://www.bigelow.org Ecological Forecasting: https://eco.bigelow.org/ [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code. ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.