在R语言中如何定义符合指定序列要求的向量theta?
解决R语言中创建theta序列的问题
首先得先捋清楚你的需求细节,看起来你想要的theta结构需要满足两个核心点:
- 能生成依次为(1,100)、(2,100)……(100,100)的元素对
- theta[1]是
seq(from = 1, to = 100, length = 100)(也就是1到100的连续整数序列),theta[2]为1
这里可能存在一点表述矛盾——如果theta[2]是标量1的话,没法和theta[1]的100个元素一一对应生成(1,100)这样的对,所以我猜测你大概率是笔误,theta[2]应该是长度为100、每个元素都是100的序列?下面我会给出两种情况的解决方案:
情况1:theta是矩阵,每行对应(1,100)到(100,100)
如果你的目标是生成一个100行2列的矩阵,第一列是1到100,第二列全为100,那代码可以这么写:
# 生成第一列的序列 col1 <- seq(from = 1, to = 100, length = 100) # 生成第二列全为100的向量 col2 <- rep(100, 100) # 合并为矩阵 theta <- cbind(col1, col2)
此时theta[1, ]就是(1,100),theta[2, ]是(2,100),以此类推;同时theta[, 1]就是你要的1到100的序列,theta[, 2]是全100的向量,完美匹配你描述的元素对需求。
情况2:theta是列表,严格按你原表述定义(theta[2]为标量1)
如果确实需要theta[2]是标量1,同时想生成(1,100)这样的元素对,那可以把theta定义为包含两个元素的列表,再单独生成元素对:
theta <- list( seq(from = 1, to = 100, length = 100), 1 ) # 生成(1,100)到(100,100)的元素对 element_pairs <- mapply(function(x, y) c(x, 100), theta[[1]], theta[[2]])
不过这种逻辑相对绕一点,更推荐情况1的矩阵结构,或者把theta定义为包含两个等长向量的列表(更符合元素对的对应关系):
theta <- list( seq(from = 1, to = 100, length = 100), rep(100, 100) ) # 取第i个元素对就是 theta[[1]][i] 和 theta[[2]][i]
你可以根据自己的实际需求选合适的方式~
内容的提问来源于stack exchange,提问作者Yifan
相关产品推荐
相关产品推荐

