任何人都可以帮我解决以下问题:
8 x 8
8 x 88
8 x 888
8 x 8888
8 x 88888
我将使用R编程来进行计算。但有没有一种方法可以使用R代码进行此计算,单个R表达式没有逗号和大括号(即使用和{})。
无论如何要通过矢量化来做到这一点,而不使用条件语句(if,while,for)?
答案 0 :(得分:10)
一系列的顺序:
cumsum(10^(0:4))
## [1] 1 11 111 1111 11111
八分:
8 * cumsum(10^(0:4))
## [1] 8 88 888 8888 88888
时代八:
8 * 8 * cumsum(10^(0:4))
## [1] 64 704 7104 71104 711104
答案 1 :(得分:0)
我不喜欢在不使用逗号或括号的规则内玩:
> sapply(trunc(( 8/9)*10^(1:6) ) ,
function(y) substitute( 8 * y, list(y=y) ) )
[[1]]
8 * 8
[[2]]
8 * 88
[[3]]
8 * 888
[[4]]
8 * 8888
[[5]]
8 * 88888
[[6]]
8 * 888888
并给出这些表达式的结果:
> lapply( sapply(trunc(( 8/9)*10^(1:6) ) ,
function(y) substitute( 8 * y, list(y=y) ) ), eval)
[[1]]
[1] 64
[[2]]
[1] 704
[[3]]
[1] 7104
[[4]]
[1] 71104
[[5]]
[1] 711104
[[6]]
[1] 7111104
答案 2 :(得分:0)
我认为你应该考虑你真正想要的东西,因为有几种方法可以做到这一点。以下是一些示例:
#示例1(所有输入参数免费):
result <- (n_ini=scan(,what=numeric(),1))*
(n_end=scan(,what=numeric(),1))*
(((cumsum(10^((x_init=scan(,what=numeric(),1)):
(x_count=scan(,what=numeric(),1)))))))
示例2(一个数字乘以一定数量的次数):
小心不要将整个代码复制并粘贴到必须为零件运行的工作中......
n_self <- scan(n=1)
print ("Press [enter] to continue")
x_countstop <- scan(n=1)
result2 <- n_self*n_self*(cumsum(10^((0):(x_countstop))))
result2
有无数的方法可以做到这一点,但我希望这些可以作为一些东西。
最好的问候