首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将这类代码转换为n维循环,有什么方法吗?

如何将这类代码转换为n维循环,有什么方法吗?
EN

Stack Overflow用户
提问于 2022-05-03 12:50:57
回答 1查看 21关注 0票数 0

我有这个n=4的代码

代码语言:javascript
复制
b_11 <- (1 / 2) * (wi[1] - wi[1] + 1); b_11
b_12 <- (1 / 2) * (wi[1] - wi[2] + 1); b_12
b_13 <- (1 / 2) * (wi[1] - wi[3] + 1); b_13
b_14 <- (1 / 2) * (wi[1] - wi[4] + 1); b_14

b_21 <- (1 / 2) * (wi[2] - wi[1] + 1); b_21
b_22 <- (1 / 2) * (wi[2] - wi[2] + 1); b_22
b_23 <- (1 / 2) * (wi[2] - wi[3] + 1); b_23
b_24 <- (1 / 2) * (wi[2] - wi[4] + 1); b_24

b_31 <- (1 / 2) * (wi[3] - wi[1] + 1); b_31
b_32 <- (1 / 2) * (wi[3] - wi[2] + 1); b_32
b_33 <- (1 / 2) * (wi[3] - wi[3] + 1); b_33
b_34 <- (1 / 2) * (wi[3] - wi[4] + 1); b_34

b_41 <- (1 / 2) * (wi[4] - wi[1] + 1); b_41
b_42 <- (1 / 2) * (wi[4] - wi[2] + 1); b_42
b_43 <- (1 / 2) * (wi[4] - wi[3] + 1); b_43
b_44 <- (1 / 2) * (wi[4] - wi[4] + 1); b_44



trB <- c(b_11, b_12, b_13, b_14,
         b_21, b_22, b_23, b_24,
         b_31, b_32, b_33, b_34,
         b_41, b_42, b_43, b_44)

对于n可能大于4的其他情况,如何简化(或使循环)?(wii是一个向量)。

如果这样做有帮助,公式可以:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-03 12:55:49

这可以矢量化为:

代码语言:javascript
复制
set.seed(0)
wi <- runif(4)  #or whatever   
0.5* (outer(wi,wi,"-")+1)

生成矩阵。现在,代码与wi的长度无关。如果您更喜欢当前的向量,则可以用以下方法对输出进行整形:

代码语言:javascript
复制
c(t(0.5* (outer(wi,wi,"-")+1)))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72099636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档