如何从R中的一个字符中分别获取我的数字?

时间:2019-03-01 03:40:31

标签: r

enter image description here

newdata <- "1311 1381 1382 1311 1222 1221 2819 2869 2911 2879 5171 5172 6719 1311 1381 1382 2899 2833 2879 2869 2819 1311 1311 1381 1382 2911 5541 6719 2911 2865 2821 2822 2819 5171 5172 5541 1311"

class(newdata)
[1] character

如图所示,我有一个数据集,数据之一是newdata,它是character

我想知道如何分别获取字符串中的数字。 最终,我想获得一个列表,例如

[1311,1381,1382,1311,1222,1221,....]

2 个答案:

答案 0 :(得分:3)

这如何为您工作:

 library(tidyverse)

newdata <- "1311 1381 1382 1311 1222 1221 2819 2869 2911 2879 5171 5172 6719 1311 1381 1382 2899 2833 2879 2869 2819 1311 1311 1381 1382 2911 5541 6719 2911 2865 2821 2822 2819 5171 5172 5541 1311"

    str_split(newdata, " ") %>% map(., as.numeric)   # for list output
    str_split(newdata, " ") %>% map(., as.numeric) %>% bind_cols() # for df/tibble
    str_split(newdata, " ") %>% map(., as.numeric) %>% bind_cols() %>% .[["V1"]] #for vector

答案 1 :(得分:0)

我不确定评论中的建议是否解决了您的问题,但是另一种可能性是使用strsplit

让我们考虑一个character向量

newdata <- c(
    "1311 1381 1382 1311 1222 1221", 
    "2819 2869 2911 2879 5171 5172 6719 1311 1381 1382 2899 2833")

那我们就可以做

lst <- lapply(newdata, function(x) as.numeric(unlist(strsplit(x, " "))))
lst
#[[1]]
#[1] 1311 1381 1382 1311 1222 1221
#
#[[2]]
# [1] 2819 2869 2911 2879 5171 5172 6719 1311 1381 1382 2899 2833

结果是list个向量中的numeric

str(lst)
#List of 2
# $ : num [1:6] 1311 1381 1382 1311 1222 ...
# $ : num [1:12] 2819 2869 2911 2879 5171 ...