2015-07-12 1 views
0

En essayant de définir des noms pour un vecteur en utilisant la fonction names, mais R me donne une erreur. Je veux créer un vecteur avec la fonction, puis définir le nom de chaque nombre dans ce vecteur. Je veux faire tout ce pas en écrivant juste une commande (par exemple v(x)). Ceci est par exemple de mon code scriptErreur de nom de vecteur

v <- c(2,6,5) 
d <- function(x) x*9 

names(d(x))<-paste("q=", 1:3, sep="") 

et R dit

Error in names(d(x)) <- paste("q=", 1:3, sep = "") : could not find function "d<-"

+0

Veuillez fournir un exemple reproductible et la sortie désirée. –

+0

Essayez peut-être de stocker le résultat de 'div (x)' dans une variable avant de définir les noms ...? – joran

+0

peut-être marquer correct pour le fermer et le retirer de la liste sans réponse? Ou avez-vous encore besoin d'aide à ce sujet? –

Répondre

1

Je ne sais pas vraiment ce que vous faites, mais en supposant que cela se rapproche de ce que je peut reproduire l'erreur:

qn <- 1:11 

div_1 <- function(x) { x <- x + 1 } 
div_2 <- function(x) { x <- x + 2 } 

div<- function(x) c(div_1(x)[1],div_2(x),div_1(x)[2:10]) 
x <- 1 
names(div(x))<- paste("q=", qn, sep="") 
# Error in names(div(x)) <- paste("q=", qn, sep = "") : 
# could not find function "div<-" 

et je peux le réparer avec ce (casser en deux étapes):

qn <- 1:11 

div_1 <- function(x) { x <- x + 1 } 
div_2 <- function(x) { x <- x + 2 } 

div<- function(x) c(div_1(x)[1],div_2(x),div_1(x)[2:10]) 

x <- 1 

v <- div(x) 
names(v)<- paste("q=", qn, sep="") 

# q=1 q=2 q=3 q=4 q=5 q=6 q=7 q=8 q=9 q=10 q=11 
# 2 3 NA NA NA NA NA NA NA NA NA 

Il peut s'agir d'un bug ou d'une limitation dans l'attribution de noms à une variable temporaire (notez que le résultat est rejeté dans votre version). Par curiosité, que faites-vous avec div?

+0

Oui, j'ai toujours fait ce pas avec la même sortie. Div est une fonction de calcul de la diversité (produits biologiques). – Bobesh

+0

Alors, est-ce que ça vous a arrangé ça? –

+0

Non, mais maintenant j'ai fixé une liitle différente. v << - div (x), noms (v) <-.... cela fonctionne mais je voulais avoir une fonction avec cette sortie. Maintenant, je dois poster deux commandes au lieu d'une. Ces commandes sont div (x) et v – Bobesh