创建一个列表变量,它的第一个元素包含所有从0到9的平方数,第二个元素为10到19之内的所有平方数,依此类推,最后一个元素为90到99之内的平方数。没有平方数的元素也应该被包含在内!
学习网友的解题思路,用的是apply()函数。
学习 apply() 函数:
1.apply函数的使用方法:
apply(X, MARGIN, FUN) Here: -x: 一个数组或者矩阵 -MARGIN: 两种数值1或者2决定对哪一个维度进行函数计算 -MARGIN=1`: 操作基于行 -MARGIN=2`: 操作基于列 -MARGIN=c(1,2)`: 对行和列都进行操作 -FUN: 使用哪种操作,内置的函数有mean(平均值)、medium(中位数)、sum(求和)、min(最小值)、max(最大值),当然还包括广大的用户自定义函数
2.解题
> m1 = matrix(0:99,nrow = 10,ncol = 10,byrow = T)
> m1[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10][1,]    0    1    2    3    4    5    6    7    8     9[2,]   10   11   12   13   14   15   16   17   18    19[3,]   20   21   22   23   24   25   26   27   28    29[4,]   30   31   32   33   34   35   36   37   38    39[5,]   40   41   42   43   44   45   46   47   48    49[6,]   50   51   52   53   54   55   56   57   58    59[7,]   60   61   62   63   64   65   66   67   68    69[8,]   70   71   72   73   74   75   76   77   78    79[9,]   80   81   82   83   84   85   86   87   88    89
[10,]   90   91   92   93   94   95   96   97   98    99
> list =  apply(
+   m1,MARGIN = 1,
+   function(m1)
+   {
+     m1[round(sqrt(m1))^2==m1]
+   })
> list
[[1]]
[1] 0 1 4 9[[2]]
[1] 16[[3]]
[1] 25[[4]]
[1] 36[[5]]
[1] 49[[6]]
integer(0)[[7]]
[1] 64[[8]]
integer(0)[[9]]
[1] 81[[10]]
integer(0)
 round()是四舍五入函数:
> x = seq(1,20,3) > x = sqrt(x) > x [1] 1.00000 2.00000 2.64575 3.16228 3.60555 4.00000 [7] 4.35890 > round(x) [1] 1 2 3 3 4 4 4
参考:https://www.jianshu.com/p/8e04245bfe6d;<---更多变形函数:lapply,sapply,tapply,