web-dev-qa-db-fra.com

Signe dollar devant une variable

J'ai cet exemple de code pour créer un nouveau bloc de données 'new_data' à partir du bloc de données existant 'my_data'.

new_data = NULL
n = 10 #this number correspond to the number of rows in my_data
conditions = c("Bas_A", "Bas_T", "Oper_A", "Oper_T") # the vector characters correspond to the target column names in my_data
for (cond in conditions){
    for (i in 1:n){
        new_data <- rbind(new_data, c(cond, my_data$cond[i]))
    }
}

Le problème est que my_data$cond (où cond est une variable et non le nom de la colonne) n'est pas accepté.

Comment appeler une colonne d'un bloc de données en utilisant, après le signe dollar, une valeur de variable?

24
this.is.not.a.nick

Pour accéder à une colonne, utilisez:

my_data[ , cond]

ou

my_data[[cond]]

La ième rangée est accessible avec:

my_data[i, ]

Combinez les deux pour obtenir la valeur souhaitée:

my_data[i, cond]

ou 

my_data[[cond]][i]
38
Sven Hohenstein

Je suppose que vous avez besoin de get()

Par exemple,
get(x,list), où list est la liste et x est la variable (peut être une chaîne), ce qui équivaut à list$x

Mais dans get(x,list), x peut être une variable alors que $, x ne peut pas être une variable.

3
rankthefirst

Vous souhaiterez souvent sélectionner une colonne entière, à savoir une variable spécifique d'un bloc de données. Si vous voulez sélectionner tous les éléments du diamètre variable, par exemple, les deux feront l'affaire:

dataframe_name[,column_position]
dataframe_name[,"column_name"]

Cependant, il existe un raccourci. Si vos colonnes ont des noms, vous pouvez utiliser le signe $:

dataframe_name$column_name
0
Naren

$ fonctionne sur des colonnes et non sur des objets de colonne individuels. C'est une forme de vectorisation. Le code

corrections$BookDate = as.Date(corrections$BookDate, format = "%m/%d/%Y")

convertit le contenu de la colonne BookDate de la table corrections des chaînes en objets Date. Il l'exécute en une seule opération, affectation.

Procédez comme suit pour résoudre votre problème:

new_data <- rbind(new_data, c(cond, my_data$cond))
0
Jossie Calderon