如何使函数跳过向量中的参数

说我有以下功能

power<-function (number){
   number^2
  }

我也有一个向量 -z

z<- c(1:3, "a", 7:9)

我想对向量变量应用幂函数。如果一切都是数字,则这些函数可以使用此代码运行良好,该代码可根据需要创建一个列表:

q<-lapply(z, FUN=power)

如果找不到有效的参数,如何使函数跳过?在这种情况下跳过“a”。假设删除奇怪的参数不是我的任务的选项。我也可能遇到函数根本找不到参数的情况(例如空白区域、网页上缺少标签)。如果该解决方案也适用于这些实例,那就太好了。谢谢。

回答

考虑创建 alist而不是 a vectoraslist可以有多种类型,而vector只能有一个类,如果有一个character元素,它会返回整个对象作为character

z <- list(1:3, "a", 7:9)
lapply(Filter(is.numeric, z), FUN = power)

或与 map_if

library(purrr)
map_if(z, .p = is.numeric, .f = power)

-输出

[[1]]
[1] 1 4 9

[[2]]
[1] "a"

[[3]]
[1] 49 64 81


以上是如何使函数跳过向量中的参数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>