很遗憾,lapply
只给出传递给它的向量的元素。
通常的解决方法是向其传递向量的名称或索引,而不是向量本身。
但请注意,您始终可以向函数传递额外的参数,因此以下方法有效:
x <- list(a=11,b=12,c=13) # Changed to list to address concerns in commments
lapply(seq_along(x), function(y, n, i) { paste(n[[i]], y[[i]]) }, y=x, n=names(x))
这里我用的是lapply
超过的指数x
,同时也传入x
和名字x
。正如您所看到的,函数参数的顺序可以是任何顺序 -lapply
将“元素”(此处为索引)传递给第一个参数not指定在额外的之中。在这种情况下,我指定y
and n
,所以只有i
left...
产生以下结果:
[[1]]
[1] "a 11"
[[2]]
[1] "b 12"
[[3]]
[1] "c 13"
UPDATE更简单的例子,相同的结果:
lapply(seq_along(x), function(i) paste(names(x)[[i]], x[[i]]))
这里函数使用“全局”变量x
并提取每次调用中的名称。