R 如何将列名传递到apply

R 如何将列名传递到apply,r,R,我在apply函数中有一个需要列名的函数。如何在apply函数中传递列名 其目的是了解如何将列名传递给apply函数中包含的函数,而不是简单地打印所有列名 我试过: apply(mtcars,1,函数(x)print(name(x))它提供了一个列表列表,其中每行是列名,每列是数据点的标题。我只想从原始数据集中打印每个列名一次。您的意思是像lappy(colnames(mtcars),print)?这将以列表的形式返回结果,但根据所需的返回值,您可以使用一个purrr::map*()函数,例如:

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

其目的是了解如何将列名传递给
apply
函数中包含的函数,而不是简单地打印所有列名

我试过:
apply(mtcars,1,函数(x)print(name(x))
它提供了一个列表列表,其中每行是列名,每列是数据点的标题。我只想从原始数据集中打印每个列名一次。

您的意思是像
lappy(colnames(mtcars),print)
?这将以列表的形式返回结果,但根据所需的返回值,您可以使用一个
purrr::map*()
函数,例如:

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

我猜您希望执行一个
lappy
,并且仍然知道所用函数中正在处理的各个列的名称

那你可能会这么做

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

那代码有什么问题?。请给出一个可复制的示例和预期输出
应用(mtcars,1,函数(x)打印(名称(x))
工作正常。我不知道您想要什么-您正在
应用于行,因此每行都有每个列名…@akrun请参阅进一步的解释。如果我对每一列进行应用,那么我会得到整个数据集的打印,而不仅仅是我想要的所有列名,
colnames
中的问题是什么如果你只想打印一次如果你只想打印一次每个列名,为什么要使用
apply
?单独使用
名称(x)
。确定。正如罗兰所指出的,这将是对purr for meindeed的介绍:作为一种通用方法,您可以迭代列表/数据帧名称(而不是项目本身),然后根据名称将列表子集以检索项目。