【问题标题】:Divide all element of a vector (with 9 elements) by first, second, ...hundredth element from another vector (with 100 elements)将向量的所有元素(包含 9 个元素)除以来自另一个向量(包含 100 个元素)的第一个、第二个、...第 100 个元素
【发布时间】:2019-05-10 13:02:18
【问题描述】:

您好,我在 R 中的程序确实需要帮助。我有一个包含九个元素的向量,我需要将每个元素除以另一个向量中的第一个、第二个、......、百分之一的元素。我尝试了这个 for 循环,但它不起作用

er=matrix(1,100)
LCZ2016=matrix(1,100)

for(i in 2:100)
  for(j in 1:9)
  {
    {
      er[i]=rnorm(1, 0, SdeLcCZ2016)
      LCZ2016[i]=DEA['L'][CZ2016,][j,]/exp(er[i])
    } 
  }

=DEA['L'][CZ2016,] 是具有 9 个元素的向量,我需要像这样创建具有 100 个元素的 LCZ2016

LCZ2016[1]=DEA['L'][CZ2016,][1] //exp(er[1])
LCZ2016[2]=DEA['L'][CZ2016,][2] //exp(er[2])
.
.
.
LCZ2016[50]=DEA['L'][CZ2016,][1] //exp(er[50])

等等。 请问您有什么想法吗?

【问题讨论】:

标签: r for-loop vector apply


【解决方案1】:

我认为你可以做到:

a <- 1:9
b <- 1:100 

output = sapply(a, function(x) x/b)
print(dim(output))

[1] 100   9

另外,您可以按照@Andre 的建议进行操作

sapply(a, /, b)

【讨论】:

  • 您是说sapply(a, /, b) 吗?
【解决方案2】:

这正是outer 的用途。

a <- 1:9
b <- 1:100 
out2 <- outer(a, b, '/')
dim(out2)
#[1]   9 100

YOLO's answer比较。

output <- sapply(a, function(x) x/b)

identical(t(out2), output)
#[1] TRUE

【讨论】:

  • @markus 不是故意的,我搞砸了鼠标点击。
猜你喜欢
  • 1970-01-01
  • 2021-08-03
  • 2019-11-06
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-15
相关资源
最近更新 更多