0

I have a csv file with a lot of text. There are 5 colums (questions) and 3 rows (responses). When I try to index a specific cell/response, R prints out that cell, but also prints the additional values in that column saying "3 levels: ...".

I believe it is different from the other csv level questions, because those concern numerics/integers, while this concerns strings.

My csv looks like this (with sep = ";"):

Q1;Q2;Q3;Q4;Q5
Ik vind het niet helemaal netjes om je sociale huurwoning te verhuren, aangezien je dan mensen passeert die al lang op de wachtrij staan of er meer recht op hebben.;Mensen die netjes in de wachtrij staan worden op deze manier gepasseerd en de woningmarkt raakt dan nog meer op slot.;Dat lijken me mensen die vooral uit zijn op eigen gewin en niet echt denken aan het grotere collectief.;Deze personen snap ik al wat meer, omdat je niet altijd een keuze hebt met de huidige woningmarkt. Het is natuurlijk niet helemaal netjes maar ik kan er wel begrip voor opbrengen.;Ik vind het op zich wel terecht maar zou het zelf niet doen omdat het een beetje klikkerig overkomt. Als ik persoonlijk overlast zou ervaren van een onderhuurder zou ik eerder overgaan tot melding.
Ja dat vind ik heel goed omdat mensen die al heel lang op zoek zijn ook een huisje kunnen krijgen.;Mensen die al lang op zoek zijn vinden ook een huisje maar mensen die in de wachtrij staan moeten wel iets langer wachten.;Ik snap het opzich wel want dan kun je toch een centje bijverdienen.;Deze snap ik heel erg want het is vandaag de dag enorm lastig om een beetje betaalbare woning te vinden en op deze manier kun je toch nog ergens terecht.;Ik vind het niet helemaal eerlijk en als je geen last hebt van die mensen moet je ze gewoon lekker laten zitten.
Ik vind het iets begrijpelijks. Als je in de sociale huur zit, geeft het al aan dat je een klein inkomen hebt. Het is fijn om de woning dan achter de hand te hebben als extra inkomen en uitvalsbasis in een stad als Amsterdam. Ook de huur illegaal met iemand delen, waardoor je beide geld bespaard, is een logisch gevolg van de krapte op de huizenmarkt. Ondanks dat het iets illegaals is kan ik er dus begrip voor opbrengen.;Een van de gevolgen is een vermindering van de maandelijkse lasten. Dit is uiteraard een voordeel voor de onderverhuurder. Omdat het daarnaast gaat om een huurwoning uit de sociale woningmarkt zijn de kosten voor beide partijen nog lager dan als het om een vrijesector woning zou gaan. Tegelijkertijd is een mogelijk gevolg natuurlijk dat je onderzocht kan worden door de gemeente, en dat er juridische gevolgen zijn als blijkt dat er illegaal wordt onderverhuurd.;Enerzijds vind ik het profiteurs, anderzijds begrijp ik ze wel.;Hen begrijp ik volledig. Het is ontzettend moeilijk om een woning te vinden in Amsterdam voor studenten, woningdelers en mensen met een laag inkomen, dus bijna elke woning die hen wordt aangeboden, zullen ze accepteren. Je hebt weinig keus.;Ook dat begrijp ik, zeker als het gaat om onderverhuurders die onderhuurders uitbuiten, zoals huisjesmelkers. In zo’n extreem geval zou ik het wellicht nog melden. Maar als er geen problemen worden ondervonden door derde partijen vind ik het ook een beetje klikken. Vooral omdat de onderhuurders weer op zoek zullen moeten naar een nieuwe woning en ze niet voor niets onderhuurden.

When I try to index the first response of the first question I use

dummyText <- read.csv("dummyText.csv", sep = ";")
dummyText[1, 1]

And than R will print:

> dummyText[1, 1]
[1] Ik vind het niet helemaal netjes om je sociale huurwoning te verhuren, aangezien je dan mensen passeert die al lang op de wachtrij staan of er meer recht op hebben.
3 Levels: Ik vind het iets begrijpelijks. Als je in de sociale huur zit, geeft het al aan dat je een klein inkomen hebt. Het is fijn om de woning dan achter de hand te hebben als extra inkomen en uitvalsbasis in een stad als Amsterdam. Ook de huur illegaal met iemand delen, waardoor je beide geld bespaard, is een logisch gevolg van de krapte op de huizenmarkt. Ondanks dat het iets illegaals is kan ik er dus begrip voor opbrengen. ...

How can I make R stop printing the levels so I just get the cell value?

JNab
  • 135
  • 10
  • 1
    maybe using `stringsAsFactors = FALSE` when reading the csv? – boski Feb 18 '19 at 11:16
  • `droplevels(dummyText[1, 1])`? – Jaap Feb 18 '19 at 11:19
  • Thanks for bringing the duplicates under my attention, but these are different questions (considering they're both about integers, and this is about strings). The `stringsAsFactors`-solutions proposed by @boski and @JBGruber solved my problem. Thanks! – JNab Feb 18 '19 at 11:32

1 Answers1

2

This is a common problem while reading in text from .csv files. The standard base function converts all text to factors by default (here is why it made sense at some point). I know of at least three (short and easy) solutions:

dummyText <- read.csv("dummyText.csv", sep = ";", stringsAsFactors = FALSE)

dummyText <- readr::read_csv2("dummyText.csv")

dummyText <- rio::import("dummyText.csv")

Personally, I favour rio, since the import function has very sensible defaults for most data types (it can import many formats such as xlsx, STATA and SPSS files). But this is just a very personal opinion.

JBGruber
  • 11,727
  • 1
  • 23
  • 45
  • Better to globally set `options('stringsAsFactors'=FALSE)` – smci Feb 22 '19 at 03:37
  • If by globally you mean in the first few lines of a script, I agree it is good practice. If you mean to put it in your `.Renviron` so it is set on startup, I disagree. In that case, your scripts wouldn't run properly on other machines than your own. – JBGruber Feb 22 '19 at 08:52
  • JBGruber, philosophies differ on which way. But either way, it's nice to set it globally. – smci Feb 22 '19 at 21:39