r - 编写复杂的函数
问题描述
我是在 R 中创建函数的新手......我有一个公式,我试图用它来计算我的数据框中的一个新变量。我曾尝试编写一个函数以应用于 mutate() 但没有成功。公式如下所示:
x = 35(col2 - col1) + 35(col4 - col3)
我试着写
val <- function(x) (35(y - x) + 35(v - w))
并在 mutate() 中输入列名...
df <- df %>% mutate(newcol= val(y=col2, x = col1, v = col4, w = col3)).
我也尝试直接将公式放入 mutate()
df <- df %>% mutate(newcol= 35(col2 - col1) + 35(col4 - col3)).
我总是收到这个错误:
Error in df(df) : attempt to apply non-function
任何人都可以提供指导吗?
解决方案
好吧,在 R(35(y - x) + 35(v - w))
中不是有效的语法。您需要明确指定乘法运算符。
您可以直接在以下位置执行此操作mutate
:
library(dplyr)
df %>% mutate(x = 35 * (col2 - col1) + 35 * (col4 - col3))
或者,如果您想创建一个函数,请将所有参数作为函数的参数传递。
val <- function(x, y, v, w) 35 * (y - x) + 35 * (w - v)
并调用它mutate
:
df %>% mutate(x = val(col1, col2, col3, col4))
推荐阅读
- android - 使用 pysical 游戏手柄来操作 android 应用程序
- windows - 使用 Visual Studio 时如何防止 BitBucket 凭据存储在 Windows 凭据管理器中?
- android - SQLITE3在使用android studio的android片段中传递重复和错误的数据
- node.js - 关键依赖:一个依赖的请求是socket.io和express的一个表达式
- blueprism - Application Modeller - 使用批处理文件的 Java 应用程序
- java - 春季云数据流 kubernetes 服务器中的组合任务运行程序失败
- python - 使用 Django 中的现有列值更新列的值
- c# - 将关键字“this”传递给子表单时不可用
- c - 在c中释放指针后如何保存指针地址
- oracle - 每当表行更新时,在 Oracle 数据库上添加列,该列存储当前日期/时间