将字符串从csv转换为R中的数字向量

Lay*_*yla 1 csv r list

我在R中有以下说明:

y <- rep(1:2,each=3)
Run Code Online (Sandbox Code Playgroud)

我知道它生成了1和2的向量:

[1] 1 1 1 2 2 2
Run Code Online (Sandbox Code Playgroud)

如果我想从具有以下形式的csv行中提取该信息,我将如何获得相同的结果:

[1] ",,1,1,1,2,2,2"
Run Code Online (Sandbox Code Playgroud)

我尝试过as.numeric和is.na,我仍然得到一个空列表.有帮助吗?

42-*_*42- 5

MatthewPlourde的建议包含在内:

> txt <- ",,1,1,1,2,2,2"
> scan(text=txt,, sep=",")
Read 8 items
[1] NA NA  1  1  1  2  2  2
Run Code Online (Sandbox Code Playgroud)

其他选择是strsplit.

> unlist( strsplit(txt, ",") )
[1] ""  ""  "1" "1" "1" "2" "2" "2"
Run Code Online (Sandbox Code Playgroud)

采用马修的建议,没有必要回答"如何转换为数字?"的问题.....但是如果你有一个角色向量,它本来就是......现在你已经分成了组件,使用as.numeric:

> as.numeric( scan(textConnection(txt), what="", sep=",") )
Read 8 items
[1] NA NA  1  1  1  2  2  2
Run Code Online (Sandbox Code Playgroud)

另一种选择是使用数字格式进行扫描:

> scan(textConnection(txt), what=numeric(0), sep=",")
Read 8 items
[1] NA NA  1  1  1  2  2  2
Run Code Online (Sandbox Code Playgroud)

并删除NA:

> numbas <- scan(textConnection(txt), what=numeric(0), sep=",")
Read 8 items
> numbas[!is.na(numbas)]
[1] 1 1 1 2 2 2
Run Code Online (Sandbox Code Playgroud)

  • 啊哈.是的,@马修.现在我记得......那就是`read.table`和表兄弟给出了那个论点,不是吗? (2认同)