Dit is een site voor studenten van de Open Universiteit. Voordat je een vraag kunt stellen moet je even een account aanmaken (dit systeem is niet gekoppeld aan je OU studentnummer en wachtwoord).

Welkom bij het vraag- en antwoord systeem van de onderzoeks-practica van de studie psychologie bij de Open Universiteit.

Houd er, als je een vraag stelt, rekening mee dat je de richtlijnen volgt!

problemen met substr

0 leuk 0 niet-leuks

Het is me nog niet gelukt. Hieronder een paar van mijn probeersels, met de reactie van R:

> dat.clean\$intentions_item1 <- as.numeric(substr(dat.clean\$Intentions_Intentions1), 2, 2);
Error in substr(dat.clean\$Intentions_Intentions1) :
  argument "start" is missing, with no default

> dat.clean\$intentions_item1 <- as.numeric(substr(dat.clean\$Intentions_Intentions1, 2, 2));
Warning message:
NAs introduced by coercion

> dat.clean\$intentions_item1 <- as.numeric(substr(trimws(dat.clean\$Intentions_Intentions1), 2, 2);
Error: unexpected ';' in "dat.clean\$intentions_item1 <- as.numeric(substr(trimws(dat.clean\$Intentions_Intentions1), 2, 2);"

> dat.clean\$intentions_item1 <- as.numeric(substr(dat.clean\$Intentions_Intentions1, 2, 2);
Error: unexpected ';' in "dat.clean\$intentions_item1 <- as.numeric(substr(dat.clean$Intentions_Intentions1, 2, 2);"

Toen ik 'trim' gebruikte, kreeg ik de melding dat hij deze functie niet vond. 'Trimws' daarentegen was er wel en leek mij hetzelfde te doen, afgaande van de bijhorende info gekregen d.m.v. F1.

Uiteindelijk heb ik verder geëxperimenteerd met recode:

> dat.clean\$Intentions_1 <- recode(dat.clean\$Intentions_Intentions1, "'<<<'=1;'<<'=2; '<'=3; '|'=4; '>'=5; '>>'=6; '>>>'=7");
> dat.clean\$Intentions1 <- as.numeric(dat.clean\$Intentions_1)

Dit lijkt gelukt te zijn. Ik kan in ieder geval de descriptives zien.

gevraagd 9 januari in Methodologie door Mark (240 punten)

1 Antwoord

0 leuk 0 niet-leuks

Heel goed dat het is gelukt!

Ik zal de foutmeldingen even helpen duiden:

> dat.clean$intentions_item1 <- as.numeric(substr(dat.clean$Intentions_Intentions1), 2, 2);
Error in substr(dat.clean$Intentions_Intentions1) :
  argument "start" is missing, with no default

De haakjes staan verkeerd: je geeft 'substr' nu maar 1 argument mee, en die hoort de '2, 2' ook te krijgen - die geef je nu aan 'as.numeric'.

> dat.clean$intentions_item1 <- as.numeric(substr(dat.clean$Intentions_Intentions1, 2, 2));
Warning message:
NAs introduced by coercion

HHier ging het goed - alleen komen er kennelijk waarden voor die niet om te zetten zijn naar getal, en dus 'coerced' worden naar missing (NA). Het kan zijn dat je in deze variabele de waarden (A1, A2, etc) al had omgezet in de labels (<<<, <<, etc). In dat geval werkt het truukje natuurlijk niet meer.

> dat.clean$intentions_item1 <- as.numeric(substr(trimws(dat.clean$Intentions_Intentions1), 2, 2);
Error: unexpected ';' in "dat.clean$intentions_item1 <- as.numeric(substr(trimws(dat.clean$Intentions_Intentions1), 2, 2);"

Hij zegt een onverwachte puntkomma tegen te komen. En terecht - je hebt te weinig haakjes afgesloten. Je zit dus nog midden in een commando.

> dat.clean$intentions_item1 <- as.numeric(substr(dat.clean$Intentions_Intentions1, 2, 2);
Error: unexpected ';' in "dat.clean$intentions_item1 <- as.numeric(substr(dat.clean$Intentions_Intentions1, 2, 2);"

En dit is dezelfde als de vorige: hij verwacht de puntkomma nog niet, omdat je nog halverwege je commando bent.

Tot slot: 'trim' herkent hij alleen als je 'userfriendlyscience' eerst hebt geladen met 'require'. Maar, trimws doet inderdaad hetzelfde, dus die kun je ook gebruiken!

beantwoord 10 januari door Gjalt-Jorn Peters (39,910 punten)
...