R: convert list of numbers from character to numeric

前端 未结 3 1016
旧巷少年郎
旧巷少年郎 2021-01-24 22:17

I have a column in my dataframe where in every cell there are one or more numbers. If there are many numbers, they are seperated with a space. Furthermore, R considers them as a

相关标签:
3条回答
  • 2021-01-24 22:49

    Here are two more options which work correctly on a vector (it seems)

    str1 <- c("6 310 21 20 64", "6 310 21 20 64","6 310 21 20 64")
    rowSums(read.table(text = str1))
    ## [1] 421 421 421
    

    Or using data.table::fread

    rowSums(data.table::fread(paste(str1, collapse = "\n")))
    # [1] 421 421 421        
    

    Or as mentioned in comments by @akrun, you can use Reduce(`+`,...) instead of rowSums(...) in both cases in order to avoid to marix conversion

    0 讨论(0)
  • 2021-01-24 22:57

    Following my comment, here is a solution using sapply :

    sum(as.numeric(strsplit("6 310 21 20 64",' ')[[1]]))
    

    which for the column of the dataframe will give something like this:

    sapply(1:nrow(df),function(x){sum(as.numeric(strsplit(str1,' ')[[x]]))})
    # 421 421 421
    

    which could be improved in sapply(strsplit(str1,' '), function(x) sum(type.convert(x))), thanks to David Arenburg's suggestion.

    0 讨论(0)
  • 2021-01-24 22:59

    We can use scan

    sum(scan(text=str1, what=numeric(), quiet=TRUE))
    #[1] 421
    

    data

    str1 <- "6 310 21 20 64"
    
    0 讨论(0)
提交回复
热议问题