【发布时间】:2011-04-30 15:45:27
【问题描述】:
我这里有一个虚拟列表:
> x <- c("a", "b", "c")
> y <- c("d", "e", "f")
> z <- list(x,y)
> z
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "d" "e" "f"
如果我想分配另一个变量(例如w)来保存列表(即z)内所有向量(即x,y)的最后一项(即“c”,“f”),我该怎么做那个?
谢谢!
【问题讨论】:
我这里有一个虚拟列表:
> x <- c("a", "b", "c")
> y <- c("d", "e", "f")
> z <- list(x,y)
> z
[[1]]
[1] "a" "b" "c"
[[2]]
[1] "d" "e" "f"
如果我想分配另一个变量(例如w)来保存列表(即z)内所有向量(即x,y)的最后一项(即“c”,“f”),我该怎么做那个?
谢谢!
【问题讨论】:
sapply(z, tail, n = 1)
【讨论】:
您还可以使用像 [] 这样的运算符实际上是带有方便符号的函数这一事实。 Richie Cotton 的答案可以写成
> "["(x, 2) # regular style function call
[1] "b"
# thanks Marek: this only works if length(x) is last element for all components
> sapply(z, "[", length(x))
[1] "c" "f"
> sapply(z, "[", c(1, 2))
[,1] [,2]
[1,] "a" "d"
[2,] "b" "e"
【讨论】:
使用mapply的另一种方式:
mapply("[", z, lapply(z, length))
【讨论】: