473 résultats trouvés

Aller à la recherche avancée

par François Bonnot
24 Oct 2018, 07:49
Forum : Questions en cours
Sujet : Ordonner une matrice générée par un expand.grid pour utiliser la fonction image
Réponses : 27
Vues : 1315

Re: Ordonner une matrice générée par un expand.grid pour utiliser la fonction image

Bonjour,
Ce ne sont pas les deux premières colonnes qu'il faut ordonner, mais les marges.
Il suffit de remplacer la dernière ligne de mon code par :

Code : Tout sélectionner

image(x=sort(unique(Mat_D[,1])),y=sort(unique(Mat_D[,2])),z=m,col=c("white","gray")) ; box()
par François Bonnot
24 Oct 2018, 07:37
Forum : Questions en cours
Sujet : faire un tri en gardant l'information de nom de colonne
Réponses : 24
Vues : 1203

Re: faire un tri en gardant l'information de nom de colonne

Bonjour, Si c'est une question de mémoire, on peut envisager une fonction dist2 ne nécessitant pas le calcul des distances inutiles : dist2 <- function(df1,df2) { d2 <- function(a,b) (a-b)^2 x2 <- outer(df1[[1]],df2[[1]],d2) y2 <- outer(df1[[2]],df2[[2]],d2) dist <- sqrt(x2+y2) colnames(dist) <- row...
par François Bonnot
23 Oct 2018, 12:27
Forum : Questions en cours
Sujet : Ordonner une matrice générée par un expand.grid pour utiliser la fonction image
Réponses : 27
Vues : 1315

Re: Ordonner une matrice générée par un expand.grid pour utiliser la fonction image

Bonjour, J'ai une matrice (Mat_D) avec 3 colonnes. Le plus efficace est de donner un exemple. Il faut bien lire le mode d'emploi de image() et regarder les exemples. z doit être une matrice, pas un vecteur. x et y sont les "locations of grid lines at which the values in z are measured", do...
par François Bonnot
23 Oct 2018, 10:57
Forum : Questions en cours
Sujet : faire un tri en gardant l'information de nom de colonne
Réponses : 24
Vues : 1203

Re: faire un tri en gardant l'information de nom de colonne

Bonjour, Une solution utilisant la fonction dist() : z <- rbind(as.matrix(data1),as.matrix(samples)) d <- as.matrix(dist(z[,1:2]))[1:nrow(data1),nrow(data1)+(1:nrow(samples))] dmin <- apply(d,1,min) positions <- apply(d,1,function(x) which(x==min(x))[1]) data.frame(min=dmin,sample=colnames(d)[positi...
par François Bonnot
18 Oct 2018, 12:46
Forum : Questions en cours
Sujet : Comparaisons de moyennes : comparaisons d'échantillons et methodes de corrections de p-valeurs
Réponses : 3
Vues : 279

Re: Comparaisons de moyennes : comparaisons d'échantillons et methodes de corrections de p-valeurs

[Administrateur] Bonjour, Les questions purement statistiques sont effectivement hors sujet sur ce forum. La question peut contenir une partie d'ordre statistique mais doit être en rapport étroit avec du code R ou un package de R. La phrase que vous soulignez en rouge avait été laissée par erreur et...
par François Bonnot
16 Oct 2018, 11:31
Forum : Questions en cours
Sujet : Créer une fonction pour changer un caractère
Réponses : 6
Vues : 522

Re: Créer une fonction pour changer un caractère

Bonjour, Je propose la méthode suivante basée sur un score égal au nombre de lettres communes bien placées. Elle est rudimentaire et ne prend pas en compte les insertions/délétions placées près du début de la chaine. score <- function(word1,word2) { if (nchar(word2)>nchar(word1)) word2 <- substr(wor...
par François Bonnot
17 Sep 2018, 08:01
Forum : Questions en cours
Sujet : supprimer les chiffres consecutifs qui se repetent
Réponses : 10
Vues : 3139

Re: supprimer les chiffres consecutifs qui se repetent

Bonjour,
Autre solution :

Code : Tout sélectionner

X[c(1,diff(X$B))!=0,]
par François Bonnot
29 Aoû 2018, 07:43
Forum : Questions en cours
Sujet : Créer une boucle pour changer le type de variable
Réponses : 6
Vues : 603

Re: Créer une boucle pour changer le type de variable

Bonjour, Il pourrait être plus efficace de stocker les données dans la base sous forme d' une table comprenant une colonne "patient", une seule colonne date (donc 100 lignes par patient) et des colonnes de données correspondantes. S'il n'est pas possible de modifier la base, on peut toujou...
par François Bonnot
27 Aoû 2018, 13:00
Forum : Questions en cours
Sujet : [Résolu] Noms et profondeurs d'une liste imbriquée
Réponses : 3
Vues : 450

Re: [Résolu] Noms et profondeurs d'une liste imbriquée

Bonjour, Les vacances étant terminées, voici une solution avec une seule fonction récursive : proflist <- function(z,level=0,result=NULL) { if (length(z)>0 && class(z)=="list") for (i in length(z):1) { names(level) <- names(z)[i] result <- c(level,proflist(z[[i]],level+1,result)) }...
par François Bonnot
19 Juil 2018, 12:27
Forum : Questions en cours
Sujet : Concours estival
Réponses : 20
Vues : 1756

Re: Concours estival

Hum... il semble difficile de battre fun2 (qui arrive en tête) et Reduce, parce que ces deux fonctions travaillent directement sur les colonnes du data frame avec un minimum d'opérations.
par François Bonnot
19 Juil 2018, 07:14
Forum : Questions en cours
Sujet : Concours estival
Réponses : 20
Vues : 1756

Re: Concours estival

Bonjour,
Une solution:

Code : Tout sélectionner

microbenchmark(as.matrix(dta) %*% rep(1,ncol(dta)))
par François Bonnot
10 Juil 2018, 06:16
Forum : Questions en cours
Sujet : stderr dans code C d'un package
Réponses : 3
Vues : 634

Re: stderr dans code C d'un package

Bonjour,
Une suggestion (sans garantie):
- ouvrir un fichier de sortie : FILE *fp=fopen("sortie.txt","w+");
- remplacer tous les printf(...) par fprintf(fp,...)
- remplacer tous les fprintf(stderr,...) par fprintf(fp,...)
par François Bonnot
02 Juil 2018, 09:48
Forum : Questions en cours
Sujet : Comparer des colonnes de dates
Réponses : 1
Vues : 372

Re: Comparer des colonnes de dates

Bonjour,
Si j'ai bien compris le problème, merge avec l'option all=TRUE devrait convenir:

Code : Tout sélectionner

df1 <- data.frame(cle=LETTERS[c(1,2,3,5,7)],x=runif(5))
df2 <- data.frame(cle=LETTERS[c(1,2,4,5,8,10)],y=runif(6))
merge(df1,df2,all=TRUE)
par François Bonnot
19 Juin 2018, 06:58
Forum : Questions en cours
Sujet : reglage GGPLOT + geom_bar avec option position
Réponses : 10
Vues : 1055

Re: reglage GGPLOT + geom_bar avec option position

Une solution consiste à changer les 2 dernières lignes de la façon suivante : geom_point(aes(x= x+0.2, y = 1.5*as.numeric(nb_species)), show.legend=FALSE, stat = "identity") + scale_y_continuous(sec.axis = sec_axis(~./1.5,name="Number of species"))

Aller à la recherche avancée