I am not able to reproduce your problem but I may have a solution that will help. The result of my names(tickers) doesn't have those strange objects. In any case, try this workaround. Replace
tickers <- mget(ls(pattern = paste(tickers, collapse = "|"))) by tickers <- mget(ls(pattern = paste(paste(tickers,"$",sep=""), collapse="|"))) HTH, Eric On Mon, Dec 29, 2025 at 4:23 PM Andre Luiz Tietbohl Ramos <[email protected]> wrote: > > Hello, > > Thanks for the interest, Enrico. It is below. > R> R> tickers > "AALR3.SA" "AGRO3.SA" "ALPA3.SA" "ALPA4.SA" "ALUP11.SA" "AMER3.SA" > "AMOB3.SA" "ANIM3.SA" "ASAI3.SA" "AURE3.SA" "AZUL4.SA" "B3SA3.SA" > "BAUH4.SA" "BAZA3.SA" "BBAS3.SA" "BBDC4.SA" "BBSE3.SA" "BDLL4.SA" > "BEES3.SA" "BIDU34.SA" "BLAU3.SA" "BMOB3.SA" "BPAC11.SA" "BPAN4.SA" > "BRAP4.SA" "BRFS3.SA" "BRKM5.SA" "BRSR6.SA" "BRST3.SA" "BSLI3.SA" > "CBAV3.SA" "CEAB3.SA" "CEBR3.SA" "CMIG3.SA" "CMIG4.SA" "CMIN3.SA" > "COPH34.SA" "CPFE3.SA" "CPLE6.SA" "CRPG5.SA" "CSAN3.SA" "CSED3.SA" > "CSMG3.SA" "CSNA3.SA" "CSUD3.SA" "CXSE3.SA" "CYRE3.SA" > ... > R> > R> getSymbols(tickers, src = "yahoo", from = start, to = end, maxgap = 10, > auto.asign = TRUE) > R> > R> tickers <- mget(ls(pattern = paste(tickers, collapse = "|"))) > R> > R> names(tickers) > [1] "AALR3.SA" "AFHI11.SA" "AGRO3.SA" > "ALPA3.SA" "ALPA4.SA" "ALUP11.SA" > [7] "AMER3.SA" "AMOB3.SA" "ANIM3.SA" > "ASAI3.SA" "AURE3.SA" "AZUL4.SA" > [13] "B3SA3.SA" "BAUH4.SA" "BAZA3.SA" > "BBAS3.SA" "BBAS3.SA_log_returns" "BBAS3.SA_mean_log" > [19] "BBAS3.SA_sd_log" "BBDC4.SA" "BBSE3.SA" > "BBSE3.SA_log_returns" "BBSE3.SA_mean_log" "BBSE3.SA_sd_log" > [25] "BDLL4.SA" "BEES3.SA" "BIDU34.SA" > "BLAU3.SA" "BMOB3.SA" "BPAC11.SA" > [31] "BPAN4.SA" "BRAP4.SA" "BRFS3.SA" > "BRKM5.SA" "BRSR6.SA" "BRST3.SA" > ... > R> class(tickers$BBAS3.SA) > [1] "xts" "zoo" > R> colnames(tickers$BBAS3.SA) > [1] "BBAS3.SA.Open" "BBAS3.SA.High" "BBAS3.SA.Low" > "BBAS3.SA.Close" "BBAS3.SA.Volume" "BBAS3.SA.Adjusted" > R> class(tickers$BBAS3.SA_log_returns) > [1] "xts" "zoo" > R> colnames(tickers$BBAS3.SA_log_returns) > [1] "daily.returns" > R> class(tickers$BBAS3.SA_mean_log) > [1] "numeric" > R> R> colnames(tickers$BBAS3.SA_mean_log) > NULL (as expected) > R> > > Therefore the list I get from the mget operation above contains several > elements with different types, which may include even _sd_ columns as well. > My objective is to get rid of the .SA suffix used for Brazilian stocks in all > elements downloaded as well as their columns. I chose to put everything in a > list and operate on it. > > TIA, > > -- > André Luiz Tietbohl Ramos, PhD. > > > Em seg., 29 de dez. de 2025 às 10:25, Enrico Schumann > <[email protected]> escreveu: >> >> On Mon, 29 Dec 2025, Andre Luiz Tietbohl Ramos writes: >> >> > Hello Eric, >> > >> > Thanks for the reply! Your answer was correct however the my problem was >> > not explained correctly, my apologies to everyone. >> > The issue is that once a list is built from the symbols that were download >> > a mixed type list is formed, see below. >> > >> > R> class(tickers$VALE3.SA_sd_log) >> > [1] "numeric" >> > R> class(tickers$VALE3.SA) >> > [1] "xts" "zoo" >> > R> R> >> > >> > The VALE3 ticker has another list element as well: VALE3.SA_mean_log. >> > This happens with a few of the symbols only thus the issue at hand seems to >> > be removing the list "numeric" type elements. >> > >> > TIA, >> > >> > -- >> > André Luiz Tietbohl Ramos, PhD. >> > >> >> Could you please post a small, reproducible example (in plain >> text)? Otherwise, it will be hard so see where your problem >> lies. >> >> >> kind regards >> Enrico >> >> >> > Em seg., 29 de dez. de 2025 às 03:18, Eric Berger <[email protected]> >> > escreveu: >> > >> >> library(quantmod) >> >> >> >> keepohlc <- function(x) { >> >> ohlc <- c(".Open",".High",".Low",".Close") >> >> iV <- sapply(ohlc, \(s) {grep(s,colnames(x))}) >> >> x[,iV] >> >> } >> >> >> >> getSymbols("MSFT") >> >> >> >> head(MSFT) >> >> >> >> MSFT.Open MSFT.High MSFT.Low MSFT.Close MSFT.Volume >> >> MSFT.Adjusted >> >> 2007-01-03 29.91 30.25 29.40 29.86 76935100 >> >> 21.12207 >> >> 2007-01-04 29.70 29.97 29.44 29.81 45774500 >> >> 21.08670 >> >> 2007-01-05 29.63 29.75 29.45 29.64 44607200 >> >> 20.96644 >> >> 2007-01-08 29.65 30.10 29.53 29.93 50220200 >> >> 21.17159 >> >> 2007-01-09 30.00 30.18 29.73 29.96 44636600 >> >> 21.19280 >> >> 2007-01-10 29.80 29.89 29.43 29.66 55017400 >> >> 20.98060 >> >> >> >> MSFT <- keepohlc(MSFT) >> >> >> >> head(MSFT) >> >> >> >> MSFT.Open MSFT.High MSFT.Low MSFT.Close >> >> 2007-01-03 29.91 30.25 29.40 29.86 >> >> 2007-01-04 29.70 29.97 29.44 29.81 >> >> 2007-01-05 29.63 29.75 29.45 29.64 >> >> 2007-01-08 29.65 30.10 29.53 29.93 >> >> 2007-01-09 30.00 30.18 29.73 29.96 >> >> 2007-01-10 29.80 29.89 29.43 29.66 >> >> >> >> >> >> On Sun, Dec 28, 2025 at 11:51 PM Andre Luiz Tietbohl Ramos >> >> <[email protected]> wrote: >> >> > >> >> > Hello, >> >> > >> >> > I'm downloading quote data using the getSymbols() function. It works >> >> very >> >> > well but downloads two additional columns for a few symbols, >> >> > namely _mean_log and _sd_log. >> >> > Therefore, the traditional 5 column OHLCV data frame has two more >> >> > columns >> >> > in some symbols. >> >> > >> >> > I move all downloaded symbols to a list in order to ease some required >> >> > computation. At the same time, my routine depends on OHLCV data only. >> >> > Thus, I need to have a new list discarding the additional columns that >> >> > exist in some symbols on the current list. The symbols with the "extra" >> >> > columns must be kept. However their additional columns must be removed. >> >> > >> >> > Could anyone suggest a solution to this problem, please? >> >> > >> >> > Thanks in advance for any help, >> >> > >> >> > -- >> >> > Andre Luiz Tietbohl Ramos, PhD >> >> > >> >> -- >> Enrico Schumann >> Lucerne, Switzerland >> https://enricoschumann.net _______________________________________________ [email protected] mailing list https://stat.ethz.ch/mailman/listinfo/r-sig-finance -- Subscriber-posting only. If you want to post, subscribe first. -- Also note that this is not the r-help list where general R questions should go.
