4

I have the vector

length
# [1] 15,34, 12,24, 225,
# Levels: 12,24, 15,34, 225,

and I want to separate them by the comma to eventually make a list of these values

Tried:

strsplit(length, ",") 

but keep getting the error message

Error in strsplit(length, ",") : non-character argument
A5C1D2H2I1M1N2O1R2T1
  • 190,393
  • 28
  • 405
  • 485
Nazrath10R
  • 41
  • 1
  • 1
  • 3

2 Answers2

11

Your "length" object is a factor:

As the error message indicates, strsplit expects a character vector as the input.

Try:

strsplit(as.character(length), ",") 

Demo

x <- factor(c("1,2", "3,4", "5,6"))
strsplit(x, ",")
# Error in strsplit(x, ",") : non-character argument
strsplit(as.character(x), ",")
# [[1]]
# [1] "1" "2"
# 
# [[2]]
# [1] "3" "4"
# 
# [[3]]
# [1] "5" "6"
A5C1D2H2I1M1N2O1R2T1
  • 190,393
  • 28
  • 405
  • 485
1

You could also use: (x from @Ananda Mahto's post)

 library(stringr)
 str_split(x, ",")
 #[[1]]
 # [1] "1" "2"

 #[[2]]
 #[1] "3" "4"

 #[[3]]
 #[1] "5" "6"

Or

  str_extract_all(x, "[0-9]+")

Or

 library(stringi)
 stri_extract_all_regex(x, "[0-9]+")
akrun
  • 874,273
  • 37
  • 540
  • 662