r - R if else 语句中的奇怪行为
问题描述
我对 R 编程不熟悉了。当我试图写我的第一个 if else 语句时,我遇到了一个我不理解的奇怪行为。
当我运行以下代码时:
x = 4;
y=4;
if (x==y) {
print('they are equal');
} else {
print('they are not equal');
}
我没有收到任何错误,并且得到了预期的输出。但是,当我更改以下相同代码的缩进时:
if(x==y){print('they are equal');}
else{print('they are not equal');}
我收到一条错误消息,提示“错误:“else”中出现意外的“else”。
那么这是否意味着 R 是一种像 Python 一样的缩进敏感语言?
解决方案
根据我有限的经验,在R语法中,else
语句应该从if
语句结束的同一行开始。否则,它将无法正常工作。并且R对缩进不敏感。例如,
这将起作用
if(x==y){print('they are equal')
} else
{print('they are not equal')}
[1] "they are equal"
即使这样也行
if(x==y){print('they are equal')} else
{print('they are not equal')}
[1] "they are equal"
这也将起作用
if(x==y){print('they are equal')} else {print('they are not equal')}
[1] "they are equal"
但是您编写的代码不起作用,因为else
语句不是从if
语句结束的同一行开始。另一个例子是,
这行不通
if(x==y){print('they are equal')}
else {
print('they are not equal')}
此外,您不需要分号。
推荐阅读
- mysql - 为什么 JSON OVERLAPS MYSQL 函数不起作用?
- typescript - 我可以在没有 strictNullChecks: false 的情况下解决这个问题吗?
- python - 对 python venv 和全局模块的不满
- python - lstm 中的最后一个密集层出错,期望 (1,) 但给定 (88,),但对于我的模型,我需要最后一层仅为 88
- bazel - 读取 WORKSPACE 中的文件内容
- excel - 如何忽略使用可选参数的代码?
- javascript - 快递+猫鼬。如何使用相同的“hidenId”参数获取所有备份集合?
- javascript - 在 bootstrap-vue 项目中包含的方法没有被触发
- tensorflow - 使用 keras 和 tensorflow 的更快的 rcnn 代码示例
- android - 尝试在 RecyclerView 中显示大位图图像 Android 显示错误 setDataSource failed