[R] Trying to Generalize a Function in R

rsherry8 r@herry8 @end|ng |rom comc@@t@net
Thu Aug 9 23:24:17 CEST 2018


Peter,

Thanks for the response. I tired the following command:
     AVB[["AVB.Close"]]
and I got:
     Error in AVB[["AVB.Close"]] : subscript out of bounds
Are you assuming that AVB is a data frame? I do not think AVB is a data 
frame. Is there a way
for me to check?
Thanks,
Bob

On 8/9/2018 3:46 PM, Peter Langfelder wrote:
> If I understand it correctly, the function getSymbols creates a
> variable with the name being the stock symbol. Then use the function
> get(symbol) to retrieve the value of the variable whose name is
> contained in the character string `symbol'. Assign that to a variable
> (e.g. AVB). You may also have to modify the names of the components
> you retrieve from the list AVB. For that, you can use
> AVB[["AVB.Close"]] instead of AVB$AVB.Close. You can them use
> something like AVB[[paste0(symbol, ".Close"]] to generalize the
> retrieval of list components.
>
> HTH,
>
> Peter
> On Thu, Aug 9, 2018 at 12:40 PM rsherry8 <rsherry8 using comcast.net> wrote:
>>
>> I wrote the following function:
>>
>> # This method gets historical stock data for the stock Avalon Bay whose
>> symbol is AVB.
>> getReturns <- function(norm = FALSE)
>> {
>>       library(quantmod)
>>
>>       getSymbols("AVB", src = "yahoo", from = start, to = end)
>>       length = length(  AVB$AVB.Close )
>>       close = as.numeric( AVB$AVB.Close )
>>       cat( "length = ", length(close ), "\n" )
>>       for( i in 1:length-1 )
>>           diff[i] = ((close[i+1] - close[i]) ) / close[i]
>>       u = mean(diff)
>>       stdDev = sd(diff)
>>       cat( "stdDev = ", stdDev, "\n" )
>>
>>       if ( norm == TRUE ) {
>>           diff = (diff - u)
>>           diff = diff / stdDev
>>       }
>>       return (diff)
>> }
>>
>> I would like to generalize it to work for any stock by passing in the
>> stock symbol. So the header for the
>> function would be:
>>
>> getReturns <- function(symbol, norm = FALSE)
>>
>> Now how do I update this line:
>>       length = length(  AVB$AVB.Close )
>> This statement will not work:
>>       length = length(  symbol$AVB.Close )
>> because the name that holds the closing price is a function of the stock
>> symbol.
>>
>> Thanks,
>> Bob
>>
>> ______________________________________________
>> 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