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

问题描述:

我试图逐个递归地提取每个元素以将其放置在循环函数中。下面的表达式中的项目,我从中获取矢量中的以下对象。我想提取每个数字对象的内容。我似乎有重大问题,因为我花了一天的时间尝试这个练习而没有结果。我已经使用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 
+0

您提供的'q'的输出值是多少? – josliber

+1

问题是你有一个字符向量'“q [[1]],q [[2]],q [[3]]”'并且你想解析它以提取'q'的对应值。? – user20650

+0

如果是这样,'lapply(strsplit(d,“,”)[[1]],function(x)eval(parse(text = x)))'是一种方法......但我会重新考虑你的工作流程尝试并避免生成此字符串 – user20650

基于对你的问题发表评论,这听起来像你想指定一些指数在q中,然后从相应的向量中提取最小值和最大值。这可以通过sapply来完成:

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

我正在与lapply一起工作我认为你的解决方案更好,非常感谢和appologies为一个非明确框架的问题。 – Barnaby