web-dev-qa-db-fra.com

Supprimer des citations d'un vecteur de caractère dans R

Supposons que vous ayez un vecteur de caractère:

char <- c("one", "two", "three")

Lorsque vous faites référence à une valeur d'index, vous obtenez ce qui suit:

> char[1]
[1] "one"

Comment pouvez-vous enlever les guillemets de la valeur de retour pour obtenir ce qui suit?

[1] one
37
Milktrader

as.name(char[1]) fonctionnera, bien que je ne sois pas sûr de la raison pour laquelle vous voulez vraiment faire cela - les citations ne seront pas reportées dans une paste par exemple:

> paste("I am counting to", char[1], char[2], char[3])
[1] "I am counting to one two three"
25
Noah

Juste essayer noquote (a)

noquote ("a")

[1] a

66
AlexArgus

Il n'y a pas de guillemets dans la valeur de retour, uniquement dans la sortie par défaut de print () lorsque vous affichez la valeur. Essayer

> print(char[1], quote=FALSE)
[1] one

ou

> cat(char[1], "\n")
one

pour voir la valeur sans guillemets.

23
Allan Engelhardt

Vous confondez le "symbole" de quantmod (terme relatif à un code pour une chose financière) avec le "symbole" de R, qui est un "type" dans R.

Vous avez dit:

J'ai un vecteur de caractère de stock symboles que je passe à quantmod :: getSymbols () et le fonction renvoie le symbole à la environnement sans les citations

Bien presque. Cela crée des objets avec ces noms dans l'environnement spécifié. Ce que je pense que vous voulez faire, c'est de nommer les choses d'un environnement. Et pour cela, vous devez «obtenir». Voici comment, exemple de code, travaillant dans l'environnement par défaut:

getSymbols ('F', src = 'yahoo', return.class = 'ts') [1] "F"

donc vous avez un vecteur de caractères des choses que vous voulez:

> z="F"
> z
[1] "F"

et puis la magie:

> summary(get(z))
     F.Open           F.High           F.Low           F.Close      
 Min.   : 1.310   Min.   : 1.550   Min.   : 1.010   Min.   : 1.260  
 1st Qu.: 5.895   1st Qu.: 6.020   1st Qu.: 5.705   1st Qu.: 5.885  
 Median : 7.950   Median : 8.030   Median : 7.800   Median : 7.920  
 Mean   : 8.358   Mean   : 8.495   Mean   : 8.178   Mean   : 8.332  
 3rd Qu.:11.210   3rd Qu.:11.400   3rd Qu.:11.000   3rd Qu.:11.180  
 Max.   :18.810   Max.   :18.970   Max.   :18.610   Max.   :18.790  

et si vous ne me croyez pas:

> identical(F,get(z))
[1] TRUE
16
Spacedman

J'imagine que c'est ce que vous essayez d'accomplir?

> a <- "a"
> a
[1] "a" # quote yes
> as.factor(a)
[1] a #quote no
4
Roman Luštrik

Je pense que j'essayais quelque chose de très similaire à l'affiche originale. le get () a fonctionné pour moi, bien que le nom à l'intérieur du graphique n'ait pas été hérité. Voici le code qui a fonctionné pour moi.

#install it if you dont have it
library(quantmod)

# a list of stock tickers
myStocks <- c("INTC", "AAPL", "GOOG", "LTD")

# get some stock prices from default service
getSymbols(myStocks)

# to pause in between plots
par(ask=TRUE)

# plot all symbols
for (i in 1:length(myStocks)) {
    chartSeries(get(myStocks[i]), subset="last 26 weeks")
}
3
Randall Goodwin

Si:

> char<-c("one", "two", "three")

Vous pouvez:

> print(char[1],quote = FALSE)

Votre résultat devrait être:

[1] one

3
Alex Poma

fonction numpy :)

_[LA MORUE]_

bonne réponse:

> nump <- function(x) print(formatC(x, format="fg", big.mark=","), quote=FALSE)

> nump(x)

[1] 1,234,567,890,123,456 
1
schenken

Le moyen le plus simple est:

> a = "some string"
> write(a, stdout())  # Can specify stderr() also.
some string

Vous permet d'imprimer sur stderr si vous effectuez une impression de gestion des erreurs.

1

En voici un qui combine noquote et paste:

noquote(paste("Argument is of length zero",sQuote("!"),"and",dQuote("double")))


#[1] Argument is of length zero ‘!’ and “double”
0
NelsonGon