在R中的双方括号中应用向量

在R中的双方括号中应用向量,r,list,lapply,data-retrieval,R,List,Lapply,Data Retrieval,在R中是否仍有将向量应用于[[]]的方法 e、 g.b是一个列表 b <- list(16,'dsdfs',35) a <- c(1:3), b[[a]] 到目前为止,你的例子在语法上是错误的。我想你是想写: a <- c(1:3); b[[a]] #Error in b[[a]] : recursive indexing failed at level 2 这可能是你的目标 为了说明如何将多元素向量传递给“[[”,而不让它抛出错误,请查看以下内容: > b2 <

在R中是否仍有将向量应用于[[]]的方法

e、 g.b是一个列表

b <- list(16,'dsdfs',35)
a <- c(1:3), b[[a]]

到目前为止,你的例子在语法上是错误的。我想你是想写:

a <- c(1:3); b[[a]]
#Error in b[[a]] : recursive indexing failed at level 2
这可能是你的目标

为了说明如何将多元素向量传递给“[[”,而不让它抛出错误,请查看以下内容:

> b2 <- list(16,list('test','dsdfs'),35)
> a <- c(1:3); b2[[c(2,1)]]
[1] "test"

b2[[2]]
返回
list('test','dsdfs')
,然后
[[1]]
应用于该结果并返回原子向量
'test'
。这就是前面的错误消息所称的“递归索引”,但在本例中,进程能够找到要返回的单个列表元素,因为连续/递归提供给“[[”的所有索引都能够传递列表项值。

到目前为止,您的示例在语法上是错误的。我假设您打算写:

a <- c(1:3); b[[a]]
#Error in b[[a]] : recursive indexing failed at level 2
这可能是你的目标

为了说明如何将多元素向量传递给“[[”,而不让它抛出错误,请查看以下内容:

> b2 <- list(16,list('test','dsdfs'),35)
> a <- c(1:3); b2[[c(2,1)]]
[1] "test"

b2[[2]]
返回
list('test','dsdfs')
,然后
[[1]]
应用于该结果并返回原子向量
'test'
。这就是前面的错误消息所称的“递归索引”,但在这种情况下,进程能够找到要返回的单个列表元素,因为连续/递归提供给“[[”的所有索引都能够传递列表项值。

可能
取消列表(b[a])
是您想要的吗?期望的结果是什么?我怀疑替换
a中的逗号,并确实阅读了“[”和“[[”的帮助页面,其中明确强调了“[]”只能接受一个结果为单个值的参数。如果所访问的结构允许,它可以接受具有多个元素的参数。@JasonAizkalns感谢您的建议,对于实际情况,我不能使用它,因为“未列出”将取消列出所有列表,包括列表中的列表,事实上,我只想取消列出我最喜欢的列表取消列表,并保留所有内部列表。也许
unlist(b[a])
是您想要的?期望的结果是什么?我怀疑替换
a中的逗号,并阅读“[”和“[]”的帮助页面,其中明确强调“[]”只能接受一个结果为单个值的参数。如果所访问的结构允许,它可以接受具有多个元素的参数。@JasonAizkalns感谢您的建议,对于实际情况,我不能使用它,因为“未列出”将取消列出所有列表,包括列表中的列表,事实上,我只想取消列出我最喜欢的列表删除列表,保留所有内部列表。为了弥补您的不足,我喜欢您在此处的回复我想知道是否只是
取消列表(b[a])
将代替
sapply
loop@Nemo:我正在写一个与你匹配的答案。当我看到弹出窗口说问题已被删除时,有趣的错误指向R-FAQ 7.30。你仍然可以从第7节中的项目列表中获益。@Davidernburg:当然。我只是想坚持使用“[]”的请求@BondedDust非常感谢,它确实帮了我很大的忙!然后我可以用[[c(a,b,…])进入列表。为了补偿你,我喜欢你在这里的回复,我想知道是否只是
取消列表(b[a])
将代替
sapply
loop@Nemo:我正在写一个与你匹配的答案。当我看到弹出窗口说问题已被删除时,有趣的错误指向R-FAQ 7.30。你仍然可以从第7节中的项目列表中获益。@Davidernburg:当然。我只是想坚持使用“[]”的请求@BondedDust非常感谢,它确实帮了我很大的忙!然后我就可以用[[c(a,b,…)]]进入列表了。