从字符对象列表中提取数字对象

时间:2015-07-20 00:08:49

标签: r

我试图逐个递归地提取每个元素,将它放在循环函数中。下面的表达式中的项目,我从中获取向量中的以下对象。我想提取每个对象的内容,这是一个数字。我似乎有很多问题,因为我花了一天时间尝试这项练习而没有结果。我使用noquote从""中退出,但是这也不起作用,因为它在noquote对象中转换对象。将主对象转换为数字也不起作用,将主对象中的元素转换为数字也不起作用。

as.vector(paste("q", paste("[[",1:length(q),"]]"), sep="", collapse=","))
[1] "q[[ 1 ]],q[[ 2 ]],q[[ 3 ]],q[[ 4 ]],q[[ 5 ]],q[[ 6 ]],q[[ 7 ]],q[[ 8 ]],q[[ 9 ]],q[[ 10 ]],q[[ 11 ]],q[[ 12 ]],q[[ 13 ]],q[[ 14 ]],q[[ 15 ]],q[[ 16 ]],q[[ 17 ]],q[[ 18 ]],q[[ 19 ]],q[[ 20 ]],q[[ 21 ]]"

一个较短的例子

q<-list(c(1,3,5,7,8),c(2,4,6,7,8),c(1,2,5,5,8))
as.vector(paste("q", paste("[[",1:length(q),"]]"), sep="", collapse=","))
[1] "q[[ 1 ]],q[[ 2 ]],q[[ 3 ]]"

编辑:

不考虑列表并由表达式产生的所需输出将如下可能的错误:

d<- as.vector(paste("q", paste("[[",1:length(q),"]]"), sep="", collapse=","))
d
[1] "q[[ 1 ]],q[[ 2 ]],q[[ 3 ]]"

d[[1]]
[1] 1 3 5 7 8
d[[2]]
[1] 2 4 6 7 8
d[[3]]
[1] 1 2 5 5 8

1 个答案:

答案 0 :(得分:1)

根据您对问题的评论,听起来您想要在q中指定一些索引,然后从相应的向量中提取最小值和最大值。这可以通过sapply

完成
idx <- c(1, 2, 3)
sapply(q[idx], min)
# [1] 1 2 1
sapply(q[idx], max)
# [1] 8 8 8