[R] inconsistency in display of character vector....
MacQueen, Don
m@cqueen1 @end|ng |rom ||n|@gov
Sun Jul 8 23:39:23 CEST 2018
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-bounces using r-project.org on behalf of btupper using 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_e4 using 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-bounces using r-project.org> on behalf of akshay kulkarni <akshay_e4 using 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 using 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 using 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 using 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.
More information about the R-help
mailing list