我想使用`[`作为lapply中的函数参数来索引完整的行。使用单个元素可以很简单地做到这一点:

lapply( list(iris, mtcars), `[`, 1, 3 )
# [[1]]
# [1] 1.4
#
# [[2]]
# [1] 160

但是,我似乎无法弄清楚与索引数据帧的整个行等效的前缀:
lapply( list(iris, mtcars), `[`, 1 )     # Seems to index columns
lapply( list(iris, mtcars), `[`, i=1 )   # ...same?

我知道我总是可以定义一个新函数
lapply( list(iris, mtcars), function(x) {x[1,]} )   # Desired behavior

但我想知道是否有办法以前缀形式获取等效的x[1,]

最佳答案

你可以做:

lapply(list(iris, mtcars), "[", 1, )

[[1]]
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2  setosa

[[2]]
          mpg cyl disp  hp drat   wt  qsec vs am gear carb
Mazda RX4  21   6  160 110  3.9 2.62 16.46  0  1    4    4
1,后的空格专用于列。如果要整行,则为空白。如果您这样做:
lapply(list(iris, mtcars), "[", 1, 1)

它返回:
[[1]]
[1] 5.1

[[2]]
[1] 21

那就是第一列的第一行。

关于r - 使用 `[`作为函数索引整行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57835132/

10-12 16:30