我在apply
函数中有一个需要列名的函数。如何在apply
函数中传递列名?
目的是找出如何将列名传递给apply
函数中包含的函数,而不是打印所有列名的简单方法
我试过了:
apply(mtcars, 1, function(x) print(names(x)))
给出了一个列表列表,其中每一行都是列名,每列都是数据点的标题。我只想从原始数据集中打印一次列名。
答案 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"