2017-09-08 2 views
0

Je travaille avec un bloc de données (stock) qui contient une colonne Date (première colonne). Je veux le sous-estimer par la date.Sous-ensemble dans Brillant à l'index (date)

stock_date <- reactive(which(stock()[, 1] == input$date[1]) - 1) 
stock_sub <- reactive(stock()[-(1:stock_date(), ]) 

input$date[1] est la date de début de dateRangeInput, la première ligne est de localiser l'index de cette date. La deuxième ligne est de sous-ensemble de la trame de données en fonction de l'indice que nous avons obtenu.

Bien que l'erreur je suis arrivé est

l'argument

de longueur 0

J'ai essayé d'utiliser match au lieu de which mais il a reçu le même code d'erreur.

Quelqu'un peut-il aider? Merci beaucoup!

entrée

est comme ceci:

textInput("ticker", "Stock ticker:") 
dateRangeInput("date", "Date Range:") 

stock est de:

stock2 <- 
    reactive(
     getSymbols(
     toupper(input$ticker), 
     from = input$date[1] - 300, 
     to = input$date[2], 
     src = "google", 
     auto.assign = F 
    ) 
    ) 

    stock3 <- reactive(as.data.table(stock2())) 
    stock <- reactive(as.data.frame(stock3())) 

Et moi aussi essayé ce qui suit dans la console d'elle a parfaitement fonctionné:

jpm <- getSymbols(
      "JPM", 
      from = "2012-01-03", 
      src = "google", 
      auto.assign = F 
     ) 
jpm <- as.data.table(jpm) 
jpm <- as.data.frame(jpm) 
which(jpm[, 1] == "2012-01-03") 

retourne 1

+0

Pouvez-vous faire de cette question [reproductible] (https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)? C'est un peu difficile sans savoir exactement à quoi ressemblent 'input $ date' et' stock() '. Peut-être que ce serait un bon début pour tester ceci dans un mode non-brillant (non-réactif) en premier. Ma conjecture, cependant, est qu'il n'y a pas de correspondance, donc 'stock_date()' est vide. – r2evans

+0

Merci beaucoup. S'il vous plaît voir ma mise à jour – Arthur

+0

Le code complet est très long et inclut le traçage. L'erreur se produit lorsque je clique sur le bouton de tracé. Mais ce que je suis sûr, c'est qu'il n'y a rien de mal avec l'intrigue et d'autres architectures parce que j'ai testé leur fonction par d'autres moyens et cela fonctionne bien – Arthur

Répondre

0

Nous sommes devrait mettre la fonction subset à l'intérieur d'une fonction reactive et retourner le data.frame requis.

Exemple:

stock.sub <- reactive({ 
    value <- subset(stock(), stock()[, 1] >= input$date[1]) 
    value 
    })