个人理财 如何在R

如何在R

目录:

视频: 在R中讀取Excel資料表 2025

视频: 在R中讀取Excel資料表 2025
Anonim

向量化是R语言的定义属性之一。如果没有某种if … else语句的矢量化版本,R就不会是R.

问题

priceCalculator()函数的使用仍然不是很经济。如果你有100个客户,你必须分别计算每个客户的价格。检查你自己,如果你添加了三个不同的小时数作为参数会发生什么情况:

<! - 1 - >
priceCalculator(c(25,110))[1] 1060 4664警告消息:如果(小时> 100)净。价格1,只有第一个元素将被使用

R不仅警告你可疑的事情正在进行,但你得到的结果是明显错误的。而不是$ 4,664,第二个客户端应该只收取$ 4,198: >> priceCalculator(110)[1] 4198

警告消息应该给你一个公平的想法。 if语句只能处理单个值,但表达式hours> 100会返回两个值,如下面的代码所示:

c(25,110)> 100 [1] FALSE TRUE
根据R

中的逻辑向量进行选择您正在寻找的解决方案是ifelse ,这是从两个向量中选择值的向量化方式。这个显着的函数有三个参数:

具有逻辑值

  • 的测试向量如果测试向量中的相应值为TRUE,则应返回值的向量

  • 如果测试向量中的相应值为FALSE,则返回值应该返回的向量
  • 工作原理

查看下面的示例:

ifelse c(1,3)<2.5,1:2,3:4)[1] 1 4

运行函数所执行的步骤:

条件表达式c(1,3)<2。 5被评估为逻辑向量。

  1. 这个向量的第一个值是TRUE,因为1小于2.所以,结果的第一个值是第二个参数的第一个值,它是1.

  2. 下一个值是FALSE ,因为3大于2. 5.因此,ifelse()将第三个参数(即4)的第二个值作为结果的第二个值。

  3. 作为结果返回具有所选值的向量。

  4. 试一试

要在priceCalculator()函数的例子中看看它是如何工作的,可以在控制台的命令行中试试这个函数。假设你有两个客户,你分别为他们工作了25个小时和110个小时。您可以使用以下代码计算净价格: >> my。小时我的。小时* 40 * ifelse(我的。小时> 100,0.9,1)[1] 1000 3960

记住,ifelse()函数可以回收它的参数。而这正是它在这里所做的。在前面的ifelse()函数调用中,翻译由表达式my创建的逻辑向量。小时> 100分别代入TRUE和FALSE代入数字0. 9和1的向量。

修改R

中的函数当然,您需要修改priceCalculator()函数,以便您还可以输入一个带有参数public值的向量。否则,您将无法计算公共和私人客户的混合价格。最终的功能如下所示:

priceCalculator < - function(hours,pph = 40,public){net。价格< - 小时* pph净值。价格100,0.9,1)tot。价格< - 净值。价格* ifelse(public,1. 06,1. 12)round(price)}

接下来,创建一个小数据框来测试函数。例如: >>客户端< - 数据。 (+小时= c(25,110,125,40),+ public = c(TRUE,TRUE,FALSE,FALSE)+)

现在可以使用这个数据框作为priceCalculator像这样:

with(clients,priceCalculator(hours,public = public))[1] 1060 4198 5040 1792

如何在R

编辑的选择

在QuickBooks Online中使用批发帐单 - 虚拟

在QuickBooks Online中使用批发帐单 - 虚拟

QuickBooks Online为会计专业人员提供免费程序。您可以注册批发价格计划,也可以免费使用QBOA。如果你选择这样做(这是一个不错的选择!),你将需要知道如何管理的事情。从您的批发帐单订阅中删除客户有时候,事情并不是这样...

基于零基础的预算与QuickBooks 2012 - 傻瓜

基于零基础的预算与QuickBooks 2012 - 傻瓜

零基预算是一个非常有用和常用的预算策略在使用QuickBooks 2012之前,您应该先了解一下。基于零的预算与顶级预算相反。零基预算从下到上工作。零基预算始于个人收入,费用,资产,负债和所有者权益账户。它检查一个特定的...

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

在Sage Timeslips中10个有用的键盘快捷键 - 虚拟键盘

键盘快捷键可以是Sage Timeslips 。启动或保存一张单据,将昨天,今天或明天的日期插入日期字段,并用一个或两个按键打开和关闭定时器。以下是十大最爱。按下它做什么Ctrl + N开始一个新的投票,而工作在...

编辑的选择

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

可以在Photoshop Elements 11中的任意形状图层上绘制多个图形 - 虚拟模型

Photoshop Elements 11中创建的任何形状图层上的图形。您可以按照与选择相同的方式添加,减去,排除重叠和相交形状。请遵循以下步骤:创建第一个形状后,在工具选项:添加到形状区域中选择一个状态按钮:...

使用读卡器将图像下载到Mac上 - 傻瓜

使用读卡器将图像下载到Mac上 - 傻瓜

您的相机可能有一个USB端口,电缆,您可以使用下载您的图像。这种方法使用相机电池电力,也相当缓慢。如果您使用读卡器,则会更快地将图像存入计算机。如果您下载了大量的图像,请考虑购买FireWire读卡器; ...

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

在Photoshop Elements 10中创建形状图层后,在Photoshop Elements 10中绘制多个图形 - 虚拟形状

可以在该图层上绘制其他形状。您可以按照与选择相同的方式添加,减去,重叠和相交形状。请记住,当您在元素中创建一个形状时,您正在创建一个基于矢量的元素。向量在数学上描述形状。 ...

编辑的选择

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

在您的IOS应用程序中添加模态视图 - 在iPhone和iPad上虚拟视图

对于那些希望用户(或用户想要)在应用程序流之外执行某些操作的情况非常适用。而不是使用带有后退按钮的导航控制器,而是显示一个模式视图,其中的控件允许用户选择一个动作或...

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

Android应用程序开发:你的Twitter应用程序的文件 - 傻瓜

,这个Android Studio项目包含大约100个文件和大约170个不同的文件夹。要制作Android Twitter应用程序,您需要专注于该项目的MainActivity。 java文件。但其他一些文件需要注意。 Twitter4J API jar文件Android没有内置的通信支持...