我想通过dplyr::mutate_each将转换应用于所有列,例如。
library(dplyr)
mult <- function(x,m) return(x*m)
mtcars %>% mutate_each(funs(mult(.,2))) # Multiply all columns by a factor of two
但是,根据列名,转换应该有参数。因此,列名应该作为附加参数传递给函数
named.mult <- function(x,colname) return(x*param.A[[colname]])
示例:将每列乘以不同的系数:
param.A <- c()
param.A[names(mtcars)] <- seq(length(names(mtcars)))
param.A
# mpg cyl disp hp drat wt qsec vs am gear carb
# 1 2 3 4 5 6 7 8 9 10 11
由于列名在mutate_each期间丢失,我目前通过将一个具有延迟计算的列表传递给mutate_(SE版本)来解决这个问题:
library(lazyeval)
named.mutate <- function(fun, cols) sapply(cols, function(n) interp(~fun(col, n), fun=fun, col=as.name(n)))
mtcars %>% mutate_(.dots=named.mutate(named.mult, names(.)))
是的,但是有一些特殊的变量,比如。包含的列名的名称。每一次colwise处决?所以我可以做一些
mtcars %>% mutate_each(funs(named.mult(.,.name)))
我建议采取不同的方法。而不是使用mutate_each
组合dplyr::变
与tidyr::聚集
和tidyr::传播
可以获得相同的结果。
例如:
library(dplyr)
library(tidyr)
data(mtcars)
# Multiple each column by a different interger
mtcars %>%
dplyr::tbl_df() %>%
dplyr::mutate(make_and_model = rownames(mtcars)) %>%
tidyr::gather(key, value, -make_and_model) %>%
dplyr::mutate(m = as.integer(factor(key)), # a multiplication factor dependent on column name
value = value * m) %>%
dplyr::select(-m) %>%
tidyr::spread(key, value)
# compare to the original data
mtcars[order(rownames(mtcars)), order(names(mtcars))]
# the muliplicative values used.
mtcars %>%
tidyr::gather() %>%
dplyr::mutate(m = as.integer(factor(key))) %>%
dplyr::select(-value) %>%
dplyr::distinct()
问题内容: 我不太明白为什么我不能将Int []从一个函数传递到另一个函数: 这给了我以下错误: 谢谢你的帮助! 问题答案: 中的参数称为 可变参数 。这意味着您可以传入该参数类型的可变数量,并且传入的所有内容都将转换为该类型的数组,以供您在函数中使用。 因此,内部的参数是一个数组,而不是所期望的一组参数。 您可能想要像这样重载以接受其中任何一个,因此您的平均函数可以调用适当的版本:
我正在尝试将参数传递给作为参数传递的函数指针。 代码: 我得到了这个错误: 类型"void"的参数与类型"void(*)(wchar_t*,wchar_t*)"的参数不兼容 如何解决此问题以完成我想要实现的目标? 编辑:对不起,不清楚。我实际上试图完成的是将函数注入子进程并传递两个参数(wchar_t*、wchar_t*),以便我可以使用它们。但主函数可以是void或int argc、char**
null 或使用数组 然而,在我们的应用程序中,我看到开发人员使用的语法是 请注意,没有array[],但是两个回调函数以逗号分隔的形式传递。这起作用了。只是好奇怎么会?
总而言之,字符串数组输出月份名称,用户输入存储在单独的数组中用于计算。这些计算输出的是总量和平均值,但总降雨量需要与相应实体的月份进行比较,最高和最低的输出需要是字符串,而不是数字。
Go 语言数组 如果你想向函数传递数组参数,你需要在函数定义时,声明形参为数组,我们可以通过以下两种方式来声明: 方式一 形参设定数组大小: void myFunction(param [10]int) { . . . } 方式二 形参未设定数组大小: void myFunction(param []int) { . . . } 实例 让我们看下以下实例,实例中函数接收整型数组参数,另一个参数
清单2.4中,向std::thread构造函数中的可调用对象,或函数传递一个参数很简单。需要注意的是,默认参数要拷贝到线程独立内存中,即使参数是引用的形式,也可以在新线程中进行访问。再来看一个例子: void f(int i, std::string const& s); std::thread t(f, 3, "hello"); 代码创建了一个调用f(3, "hello")的线程。注意,函数f需