r - 为什么这个表达式的长度是 11?
问题描述
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
y <- c(x, 0, x)
v <- 2*x + y + 1
生成一个长度为 11 的新向量 v,该向量通过逐个元素相加构成,2*x 重复 2.2 次,y 仅重复一次,1 重复 11 次。
请解释长度是11?
解决方案
书中该部分上方的文字说:
出现在同一表达式中的向量不必都具有相同的长度。如果不是,则表达式的值是一个与表达式中出现的最长向量具有相同长度的向量。
换句话说,这里表达式中最长的向量是y
,其长度为 11。因此,结果向量的长度为 11。
x <- c(10.4, 5.6, 3.1, 6.4, 21.7)
y <- c(x, 0, x)
length(x)
#> [1] 5
length(y)
#> [1] 11
它继续说:
表达式中较短的向量会根据需要(可能是部分地)循环使用,直到它们与最长向量的长度相匹配。
这意味着为了添加两个向量,您需要首先使它们具有相同的长度。这样做的方法是循环使用向量,直到它们的长度相同。这就是说在这种情况下2 * x + y
相当于2 * (c(x, x, x[1])) + y
。您重复较短的向量,直到无法放入完整的向量,然后包含元素以弥补差异。c(x, x, x[1])
长度为 11,与 的长度相同y
。
推荐阅读
- php - Laravel:将动态表名传递给模型,例如受保护的 $table = "$tablename"
- python - 在 PyCharm 中使用控制台中的命令行运行 python 程序
- javascript - 如何在角度指令(即 ng-init)r 的字符串插值中使用对象?
- alibaba-cloud-ecs - 阿里云ECS中的云盘一式三份
- ios - LLDB:查看 UIModalPresentationStyle 枚举的实际值
- typescript - 在多个级别上推断 TypeScript 中的泛型类型参数
- jquery - 使用 jQuery 和 Ajax 上传 SQL 文件
- laravel - Laravel 一对多质量解离()
- javascript - 以人工顺序对 JavaScript 数组进行排序
- c++ - 计算所有对之间的曼哈顿距离