Désolé pour la duplicate, mais pour une raison quelconque, la réponse indiquée Ici ne fonctionne pas pour moi. J'ai vérifié et la table de données avec laquelle je travaille est de nature de caractère.
Comme vous le voyez, j'ai modélisé la deuxième colonne de manière à avoir des éléments exclusivement au format fraction. Je veux avoir la deuxième colonne en format décimal, la première colonne en tant que numérique plutôt que de caractère plutôt que de caractère et l'objectif final est de résumer les deux colonnes de la ligne de ligne. P> alors que j'essaye de le transformer en décimal Cependant, il n'a aucun effet sur mon DT - le voir pour vous-même p> l'autre approche > dt %>% mutate(V2 = eval(parse(text = V2)))
V1 V2
1 4 0.75
2 1 0.75
3 0 0.75
4 3 0.75
3 Réponses :
Utiliser sapply code>.
dt$V2 <- sapply(dt$V2, function(x) eval(parse(text=x)))
dt
# V1 V2
# 1 4 0.00
# 2 1 0.00
# 3 0 0.50
# 4 3 0.75
Merci, jay.sf - ça marche! Je ne comprends pas cependant, pourquoi l'appliquer cela fonctionne directement mais en utilisant une fonction ne fonctionne pas? N'était-ce pas censé être la même chose?
Je ne suis pas sûr à 100%, mais parse code> lit le vecteur "ligne par ligne", qui est probablement la raison pour laquelle il s'agit juste de la dernière ligne est
eval code> ued. Semblable à non vectorisé,
sapply code>.
Votre fonction fonctionne, mais vous ne changez pas de sorte de retour de ou stocke le résultat dans x code> dans la fonction et retourner un
non modifié x code>.
eval code > +
parse code> directement p>
x code> et renvoyer le changement
x code >. p>
Wow, je ne peux pas y croire. Vous êtes 100% raison! J'ai perdu beaucoup de temps et je ne peux pas croire que c'était le problème lol - merci, ronak !!
Une autre option consiste à scinder avec tstrsplit code> et diviser
Le problème résulte de la manière dont vous avez défini
fractiontodecimal () code>. Le
x code> est redondant.
J'ai pensé que cela pourrait être le cas, alors j'ai aussi essayé sans, mais cela ne fonctionnait toujours pas .. Merci pour la pointe Tho, j'imprime toujours le résultat à la fin - va changer cela à partir de maintenant
Je veux dire simplement supprimer le
x code> à la dernière ligne de
fractiontodecimal () code> et
sapply () code> fonctionnera. Ça marche pour moi.