GeoffDS
GeoffDS

Reputation: 1271

Read list of names from CSV into R

I have a text file of names, separated by commas, and I want to read this into whatever in R (data frame or vector are fine). I try read.csv and it just reads them all in as headers for separate columns, but 0 rows of data. I try header=FALSE and it reads them in as separate columns. I could work with this, but what I really want is one column that just has a bunch of rows, one for each name. For example, when I try to print this data frame, it prints all the column headers, which are useless, and then doesn't print the values. It seems like it should be easily usable, but it appears to me one column of names would be easier to work with.

Upvotes: 1

Views: 2064

Answers (3)

Rui Barradas
Rui Barradas

Reputation: 76402

Since the OP asked me to, I'll post the comment above as an answer.
It's very simple, and it comes from some practice in reading in sequences of data, numeric or character, using scan.

dat <- scan(file = your_filename, what = 'character', sep = ',')

Upvotes: 3

Łukasz Prokulski
Łukasz Prokulski

Reputation: 79

Something like that?

Make some test data:

# test data
list_of_names <- c("qwerty","asdfg","zxcvb","poiuy","lkjhg","mnbvc" )
list_of_names <- paste(list_of_names, collapse = ",")

list_of_names

# write to temp file
tf <- tempfile()
writeLines(list_of_names, tf)

You need this part:

# read from file
line_read <- readLines(tf)
line_read

list_of_names_new <- unlist(strsplit(line_read, ","))

Upvotes: 1

pogibas
pogibas

Reputation: 28339

You can use read.csv are read string as header, but then just extract names (using names) and put this into a data.frame:

data.frame(x = names(read.csv("FILE")))

For example:

write.table("qwerty,asdfg,zxcvb,poiuy,lkjhg,mnbvc",
            "FILE", col.names = FALSE, row.names = FALSE, quote = FALSE)
data.frame(x = names(read.csv("FILE")))

      x
1 qwerty
2  asdfg
3  zxcvb
4  poiuy
5  lkjhg
6  mnbvc

Upvotes: 1

Related Questions