R语言:打印九九乘法表

g
gooog
楼主 (北美华人网)
打印九九乘法表. 自己乘以自己,不用显示结果。 R程序如下。从C改变而来的。当i小于9的时候,结果都是正确的。但是当i=9时,就开始出错了。 请帮忙改正确。
要求:内循环还是用for,不能用while和repeat。不能用if(i == 9) break 主要是从(i+1):9 这个地方考虑改动。
for (i in 1:9) {     for (j in (i+1):9) {      print(paste("i=", i, ";j=", j,";i*j=", i*j))    } }
[1] "i= 1 ;j= 2 ;i*j= 2" [1] "i= 1 ;j= 3 ;i*j= 3" [1] "i= 1 ;j= 4 ;i*j= 4" [1] "i= 1 ;j= 5 ;i*j= 5" [1] "i= 1 ;j= 6 ;i*j= 6" [1] "i= 1 ;j= 7 ;i*j= 7" [1] "i= 1 ;j= 8 ;i*j= 8" [1] "i= 1 ;j= 9 ;i*j= 9" [1] "i= 2 ;j= 3 ;i*j= 6" [1] "i= 2 ;j= 4 ;i*j= 8" [1] "i= 2 ;j= 5 ;i*j= 10" [1] "i= 2 ;j= 6 ;i*j= 12" [1] "i= 2 ;j= 7 ;i*j= 14" [1] "i= 2 ;j= 8 ;i*j= 16" [1] "i= 2 ;j= 9 ;i*j= 18" [1] "i= 3 ;j= 4 ;i*j= 12" [1] "i= 3 ;j= 5 ;i*j= 15" [1] "i= 3 ;j= 6 ;i*j= 18" [1] "i= 3 ;j= 7 ;i*j= 21" [1] "i= 3 ;j= 8 ;i*j= 24" [1] "i= 3 ;j= 9 ;i*j= 27" [1] "i= 4 ;j= 5 ;i*j= 20" [1] "i= 4 ;j= 6 ;i*j= 24" [1] "i= 4 ;j= 7 ;i*j= 28" [1] "i= 4 ;j= 8 ;i*j= 32" [1] "i= 4 ;j= 9 ;i*j= 36" [1] "i= 5 ;j= 6 ;i*j= 30" [1] "i= 5 ;j= 7 ;i*j= 35" [1] "i= 5 ;j= 8 ;i*j= 40" [1] "i= 5 ;j= 9 ;i*j= 45" [1] "i= 6 ;j= 7 ;i*j= 42" [1] "i= 6 ;j= 8 ;i*j= 48" [1] "i= 6 ;j= 9 ;i*j= 54" [1] "i= 7 ;j= 8 ;i*j= 56" [1] "i= 7 ;j= 9 ;i*j= 63" [1] "i= 8 ;j= 9 ;i*j= 72" [1] "i= 9 ;j= 10 ;i*j= 90" [1] "i= 9 ;j= 9 ;i*j= 81"
c
crazyHat
我提醒一下各位。楼主前段时间发现nature的一篇文章有漏洞,并且准备就该问题在nature上发表一篇文章
n
nuanxin1
看了一下没搞清楚 是不能有1*1, 9*9 这些?

g
gooog
我提醒一下各位。楼主前段时间发现nature的一篇文章有漏洞,并且准备就该问题在nature上发表一篇文章
crazyHat 发表于 2023-02-16 16:22

是的。老板没有批准我的proposal。老板认为这种得罪人的事情少做。 所以最后就不了了之了。
周瑜
for (j=i+1; j <=9; j++)
g
gooog
for (j=i+1; j <=9; j++)
周瑜 发表于 2023-02-16 16:25

我是从你这行C代码转换成R的。 怎么在R里准确实现呢?
r
ruby12blue
这是智商测验吗?😵‍💫😵‍💫😵‍💫
g
gooog
这是智商测验吗?😵‍💫😵‍💫😵‍💫
ruby12blue 发表于 2023-02-16 16:27

不是。就是寻求经验。有经验的R程序员也许有很多trick能漂亮的解决这个问题。 特此寻求经验。
g
gooog
看了一下没搞清楚 是不能有1*1, 9*9 这些?


nuanxin1 发表于 2023-02-16 16:24

对。不用显示 x*x
c
crichris
I in 1:8 为啥不行
s
shanggj
我提醒一下各位。楼主前段时间发现nature的一篇文章有漏洞,并且准备就该问题在nature上发表一篇文章
crazyHat 发表于 2023-02-16 16:22

Chatgpt 应该可以回答
g
gooog
I in 1:8 为啥不行
crichris 发表于 2023-02-16 16:36

多谢!
c
crazyeater
i=9当然会出错,你不用打9*9, 也不用9*10, i最大只要到8就可以了啊。
c
crichris
多谢!
gooog 发表于 2023-02-16 16:39

但是还是没有解决a:b 和Python 里 range(a, b+1) 不一样的问题
这个1:8 这个和break 有啥区别
g
gooog
但是还是没有解决a:b 和Python 里 range(a, b+1) 不一样的问题
这个1:8 这个和break 有啥区别
crichris 发表于 2023-02-16 16:43

是的。必须要有一个函数, start < end 当start 等于,就跳出循环。 所以说for ( j=i+1;j<10, j++)是最科学的。
丸子儿
for (i in 1:9) 改为 for (i in 1:8)