Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 斜交叠合_R_Strsplit - Fatal编程技术网

R 斜交叠合

R 斜交叠合,r,strsplit,R,Strsplit,我在一些文本中有一个字符串,格式为“12,34,77”,包括引号 我需要把每一个数字的值放到一个列表中。我尝试使用lappy和strsplit: control2=lapply(strsplit(data$values,","),as.numeric) 但我得到了一个错误: 非字符参数 我做错了什么?试试这个: x <- "12,34,77" sapply(strsplit(x, ",")[[1]], as.numeric, USE.NAMES=FALSE) [1] 12 34 77

我在一些文本中有一个字符串,格式为
“12,34,77”
,包括引号

我需要把每一个数字的值放到一个列表中。我尝试使用
lappy
strsplit

control2=lapply(strsplit(data$values,","),as.numeric)
但我得到了一个错误:

非字符参数

我做错了什么?

试试这个:

x <-  "12,34,77"
sapply(strsplit(x, ",")[[1]], as.numeric, USE.NAMES=FALSE)
[1] 12 34 77
试试这个:

x <-  "12,34,77"
sapply(strsplit(x, ",")[[1]], as.numeric, USE.NAMES=FALSE)
[1] 12 34 77

我认为你的问题可能源于你的原始数据。无论如何,如果你想处理数字,你必须去掉引号。我推荐
gsub

> x <- '"1,3,5"'
> x
[1] "\"1,3,5\""
> x <- gsub("\"", "", x)
> x
[1] "1,3,5"
> as.numeric(unlist(strsplit(x, ",")))
[1] 1 3 5
>x
[1] "\"1,3,5\""

>我认为你的问题可能源于你的原始数据。无论如何,如果你想处理数字,你必须去掉引号。我推荐
gsub

> x <- '"1,3,5"'
> x
[1] "\"1,3,5\""
> x <- gsub("\"", "", x)
> x
[1] "1,3,5"
> as.numeric(unlist(strsplit(x, ",")))
[1] 1 3 5
>x
[1] "\"1,3,5\""

>正如已经指出的,您首先需要正则表达式指出引号

taRifx
库中的
destring
函数将执行此操作(删除任何非数字字符),然后强制执行数字:

test <- '"12,34,77"'
library(taRifx)
lapply(strsplit(test,","),destring)
[[1]]
[1] 12 34 77

test正如已经指出的那样,您需要先正则表达式指出引号

taRifx
库中的
destring
函数将执行此操作(删除任何非数字字符),然后强制执行数字:

test <- '"12,34,77"'
library(taRifx)
lapply(strsplit(test,","),destring)
[[1]]
[1] 12 34 77
测试1)系带

1a)标量这是一个使用gsubfn软件包中的
Straply
的一行程序:

library(gsubfn)
x <- '"12,34,567"'

strapply(x, "\\d+", as.numeric, simplify = c)
## [1]  12  34 567
2)gsub和扫描

2a)标量这里是一个使用
gsub
scan
的线性函数:

scan(text = gsub('"', '', x), what = 0, sep = ",")
## Read 3 items
## [1]  12  34 567
2b)矢量化矢量化版本将涉及组件的重叠

lapply(v, function(x) scan(text = gsub('"', '', x), what = 0, sep = ","))
lapply(v, function(x) as.numeric(strsplit(x, '[",]')[[1]][-1]))
3)strsplit

3a)标量这里是一个
strsplit
解决方案。请注意,我们在
上进行了拆分:

as.numeric(strsplit(x, '[",]')[[1]][-1])
## [1]  12  34 567
3b)矢量化矢量化解决方案将再次涉及组件的重叠:

lapply(v, function(x) scan(text = gsub('"', '', x), what = 0, sep = ","))
lapply(v, function(x) as.numeric(strsplit(x, '[",]')[[1]][-1]))
3c)矢量化-更简单或稍微简单:

lapply(strsplit(gsub('"', '', v), split = ","), as.numeric)
1)捆扎

1a)标量这是一个使用gsubfn软件包中的
Straply
的一行程序:

library(gsubfn)
x <- '"12,34,567"'

strapply(x, "\\d+", as.numeric, simplify = c)
## [1]  12  34 567
2)gsub和扫描

2a)标量这里是一个使用
gsub
scan
的线性函数:

scan(text = gsub('"', '', x), what = 0, sep = ",")
## Read 3 items
## [1]  12  34 567
2b)矢量化矢量化版本将涉及组件的重叠

lapply(v, function(x) scan(text = gsub('"', '', x), what = 0, sep = ","))
lapply(v, function(x) as.numeric(strsplit(x, '[",]')[[1]][-1]))
3)strsplit

3a)标量这里是一个
strsplit
解决方案。请注意,我们对
进行了拆分:

as.numeric(strsplit(x, '[",]')[[1]][-1])
## [1]  12  34 567
3b)矢量化矢量化解决方案将再次涉及组件的重叠:

lapply(v, function(x) scan(text = gsub('"', '', x), what = 0, sep = ","))
lapply(v, function(x) as.numeric(strsplit(x, '[",]')[[1]][-1]))
3c)矢量化-更简单或稍微简单:

lapply(strsplit(gsub('"', '', v), split = ","), as.numeric)

其他用户发布的解决方案是:control2=lapply(strsplit(as.character(data$values),“,”),as.numeric),工作正常。Thanks@Manolo那么您就没有引号了。:)看到了吗
as.numeric(“'9””)
其他用户发布的解决方案是:control2=lapply(strsplit(as.character(data$values),“,”),as.numeric),工作正常。Thanks@Manolo那么您就没有引号了。:)看到了吗
as.numeric(“'9””)
现在回答您的问题,不需要额外的解析,
gsub
-bing或
regex
-ing。现在回答您的问题,不需要额外的解析,
gsub
-bing或
regex
-ing。