将字符串向量转换为整数向量

rws*_*wst 11 r

以下按预期工作:

> as.integer(c("2","3"))
[1] 2 3
Run Code Online (Sandbox Code Playgroud)

但是当我尝试(使用stringr包)时:

> str_split("55,66,77",",")
[[1]]
[1] "55" "66" "77"
> as.integer(str_split("55,66,77",","))
Error: (list) object cannot be coerced to type 'integer'
Run Code Online (Sandbox Code Playgroud)

有没有其他方法将形式为"53,56,77"的字符串转换为具有这三个数字的向量?我是一个完整的新手,任何有关此文档的提示都将受到高度赞赏.

sgi*_*ibb 17

str_split返回一个列表.您必须访问正确的列表元素:

as.integer(str_split("55,66,77",",")[[1]]) ## note the [[1]]
# [1] 55 66 77
Run Code Online (Sandbox Code Playgroud)

或者您可以使用unlist将完整列表转换为向量:

as.integer(unlist(strsplit("55,66,77",",")))
# [1] 55 66 77
Run Code Online (Sandbox Code Playgroud)

  • 列表是(通用)向量,但不是可以强制转换为整数的向量. (3认同)

Mat*_*erg 7

如果你有一个字符串向量并希望每个字符串的值,lapply将迭代列表:

v <- c("55,66,77", "1,2,3")
lapply(str_split(v, ','), as.integer)
## [[1]]
## [1] 55 66 77
## 
## [[2]]
## [1] 1 2 3
Run Code Online (Sandbox Code Playgroud)