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,....]
答案 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 ...