循环一个函数,每次迭代仅更改一个参数变量

时间:2019-03-04 22:15:04

标签: r function loops arguments

我试图弄清楚如何循环执行一个函数,以便它更改函数中的一个参数以匹配列表中的变量

data=mtcars
carb=4
list<-list(1,2,4,5,6)

func<-function(data, cyln, carbn){
  a<-data%>%group_by(cyl==cyln,carb==carbn)%>%count
  print(a)
}

function(mtcars,list,4)...or something where cyl takes its value from the list. 

我基本上是在尝试获取该函数来向我显示列表中包含的每个不同气缸的计数(a)。

因此,要打印1缸,4碳水化合物的单个计数; 2缸,4碳水化合物; 4缸,4碳水化合物; 5缸,4碳水化合物; 6缸4碳水化合物。

我想不出一种将列表应用于函数的方法,以至于我只能更改柱面参数/变量

任何帮助表示赞赏

为清楚起见进行编辑:

我想做的是循环,以便函数每次迭代从列表中获取一个新元素。在每个循环的函数内部将是这样的:

a<-data%>%group_by(cyl==1, carb)%>%count 
  print(a)

第二个是

a<-data%>%group_by(cyl==2, carb)%>%count
  print(a)

第三个是

a<-data%>%group_by(cyl==4,carb)%>%count
   print(a)

和1,2,4(cyl)来自列表,而另一个变量(carb)保持静态为4。

2 个答案:

答案 0 :(得分:0)

您可以使用sapply遍历包含cyl的值的向量的每个元素。例如:

sapply(c(1,2,4,5,6), function(x)
  nrow(subset(mtcars, cyl == x & carb == 4)))

[1] 0 0 0 0 4

我假设您只是使用mtcars作为示例数据,因为该数据集中cyl的唯一值是4、6、8,并且只有cyl = 6, carb = 4返回的值> 0

答案 1 :(得分:0)

reddit用户和另一个人给了我这个解决方案,效果很好! :

请尝试使用purrr库中的map而不是循环。您可以在函数(。)中插入虚拟参数,以表示正在更改的值,并根据需要设置数据和碳素。只需记住在函数前使用tilda(〜),以便将其视为公式。

<a-entity gltf-model="..." ao-map="src: my-ao.png"></a-entity>