如何将列名传递给apply

时间:2018-01-22 14:40:49

标签: r

我在apply函数中有一个需要列名的函数。如何在apply函数中传递列名?

目的是找出如何将列名传递给apply函数中包含的函数,而不是打印所有列名的简单方法

我试过了: apply(mtcars, 1, function(x) print(names(x)))给出了一个列表列表,其中每一行都是列名,每列都是数据点的标题。我只想从原始数据集中打印一次列名。

2 个答案:

答案 0 :(得分:1)

我想你想做一个lapply,并且仍然知道正在使用的函数内正在处理的相应列的名称。

然后你可能会这样做

lapply(colnames(mtcars), function(x) {
  if (x == "mpg")
    diff(mtcars[[x]])
  else
    cumsum(mtcars[[x]])
})

答案 1 :(得分:0)

你的意思是lapply(colnames(mtcars), print)吗?这会将结果作为列表返回,但根据您所需的返回值,您可以使用purrr::map_*()函数之一,例如:

purrr::map_chr(colnames(mtcars), ~ .x)
#>  [1] "mpg"  "cyl"  "disp" "hp"   "drat" "wt"   "qsec" "vs"   "am"   "gear"
#> [11] "carb"