我们在第一期主要学习了如何在R中对向量进行有效索引,以及高效利用R中的回收与向量化运算。在第一期的作业中,我们将会练习这一技能。
练习题
以下每个练习如无特别说明,则都可以使用单行代码完成!
a) 尝试用seq()函数生成一列从1到99的奇数向量;
b) 使用以下代码生成Vec1:
len <- sample(1000:1500, 1)
Vec1 <- sample(1:100, len, replace=TRUE)
现在,借助seq()函数提取Vec1中所有奇数位置的元素(也就是Vec1中的第1个,第3个,第5个…元素),由于Vec1的长度每一次都是随机的,所以请注意确保你的代码的可重复性;
尝试不借助seq()函数达到相同结果;
c) 提取Vec1中的所有偶数元素(非偶数位置);
d) 对Vec1中每个元素加上其对应序数的数字,也就是说,对Vec1中的第一个元素加上1,第二个元素加上2,第三个元素加上3……
e) 借助回收的特性,对Vec1中的每个奇数位置的元素加上1;
f) 对Vec1中的每个元素进行n次方运算,n为该元素所处的位置。也就是说,生成向量的第一个元素为Vec1[1]的1次方,第二个元素为Vec1[1]的2次方……
g) 对Vec1中的每个元素进行交替次方运算,第一个元素提升2次方,第二个元素提升3次方,第三个元素提升2次方,第四个元素提升3次方……
h) (Challenging) 借助ifelse()函数,仅对Vec1中奇数位置的每个元素加3,偶数位置不变;
i) (Challenging) 对Vec1中每个奇数位置的元素提升其对应位置的次方,也就是说,对第一个元素提升1次方,对第三个元素提升3次方,对第五个元素提升5次方……(该练习可以通过两行代码完成)
答案