返回功能输出

时间:2018-09-05 12:11:38

标签: r

我正在尝试运行此功能并尝试获取输出。输入为矢量形式,函数的响应实际上包括矢量,而不是标量。我尝试了此代码,但无法正常工作。我是R的新手,我们将不胜感激。以下是代码

park91a <- function(xx) {
  x1 <- xx[1]
  x2 <- xx[2]
  x3 <- xx[3]
  x4 <- xx[4]

  term1a <- x1/2
  term1b <- sqrt(abs(1 + (x2+x3^2)*x4/(x1^2))) - 1
  term1 <- term1a * term1b

  term2a <- x1 + 3*x4
  term2b <- exp(1 + sin(x3))
  term2 <- term2a * term2b

  real <- term1 + term2
  return(real)
}

data <- read.csv("TRANSISTORDATA.txt")
mydata <- na.omit(data)
mydata
inputs <- mydata[1:10,1:4] 
y <- mydata[,7]
y <- y[1:10]
xx<- inputs
xx
xx <- c(inputs)
park91a(xx)

输入中包含这样的数据

      x1    x2    x3    x4
1   0.21 -0.26  0.23 -0.21
2  -0.19  0.18  0.22  0.21
3  -0.19 -0.08 -0.28 -0.28
4   0.19 -0.25  0.28  0.28
5  -0.28  0.25 -0.22 -0.21
6  -0.22  0.21  0.17  0.16
7  -0.22 -0.12  0.27 -0.25
8   0.11  0.23 -0.27  0.24
9  -0.19 -0.19 -0.19  0.24
10  0.17  0.21  0.19 -0.24

2 个答案:

答案 0 :(得分:0)

如果输入是矩阵,则xx[1]将为0.21,xx[2]将为-0.19,并且它将以这种方式沿第一列向下移动。如果您希望为整个列计算(我想这是给定列名和函数中名称的目的。那么您将需要编辑函数的第一行,例如:

x1 <- xx[,1]
x2 <- xx[,2]
x3 <- xx[,3]
x4 <- xx[,4]

答案 1 :(得分:0)

您没有提供所需的输出。因此,您的问题对我来说还不是很清楚。首先,我重建了您的数据:

inputs <- read.table(header=TRUE, text=
"    x1    x2    x3    x4
   0.21 -0.26  0.23 -0.21
  -0.19  0.18  0.22  0.21
  -0.19 -0.08 -0.28 -0.28
   0.19 -0.25  0.28  0.28
  -0.28  0.25 -0.22 -0.21
  -0.22  0.21  0.17  0.16
  -0.22 -0.12  0.27 -0.25
   0.11  0.23 -0.27  0.24
  -0.19 -0.19 -0.19  0.24
  0.17  0.21  0.19 -0.24")

最终,您需要这样的东西:

within(inputs, {
  term1a <- x1/2
  term1b <- sqrt(abs(1 + (x2+x3^2)*x4/(x1^2))) - 1
  term1 <- term1a * term1b

  term2a <- x1 + 3*x4
  term2b <- exp(1 + sin(x3))
  term2 <- term2a * term2b

  real <- term1 + term2
})

结果:

#       x1    x2    x3    x4       real      term2   term2b term2a         term1       term1b term1a
# 1   0.21 -0.26  0.23 -0.21 -1.3910343 -1.4340132 3.414317  -0.42  0.0429788836  0.409322701  0.105
# 2  -0.19  0.18  0.22  0.21  1.4377575  1.4877264 3.381196   0.44 -0.0499689622  0.525989076 -0.095
# 3  -0.19 -0.08 -0.28 -0.28 -2.1243796 -2.1237920 2.061934  -1.03 -0.0005876561  0.006185854 -0.095
# 4   0.19 -0.25  0.28  0.28  3.6507163  3.6910628 3.583556   1.03 -0.0403465463 -0.424700487  0.095
# 5  -0.28  0.25 -0.22 -0.21 -1.9113789 -1.9886573 2.185338  -0.91  0.0772783929 -0.551988521 -0.140
# 6  -0.22  0.21  0.17  0.16  0.7998736  0.8370334 3.219359   0.26 -0.0371597771  0.337816156 -0.110
# 7  -0.22 -0.12  0.27 -0.25 -3.4554087 -3.4427557 3.549233  -0.97 -0.0126529657  0.115026961 -0.110
# 8   0.11  0.23 -0.27  0.24  1.8185544  1.7279556 2.081874   0.83  0.0905987637  1.647250250  0.055
# 9  -0.19 -0.19 -0.19  0.24  1.2732947  1.1927515 2.250475   0.53  0.0805431677 -0.847822818 -0.095
# 10  0.17  0.21  0.19 -0.24 -1.8039939 -1.8058328 3.283332  -0.55  0.0018389314  0.021634487  0.085

或者这个:

inputs$real <- with(inputs, 
  x1/2   *    (sqrt(abs(1 + (x2+x3^2)*x4/(x1^2))) - 1) +
  (x1 + 3*x4)  *   exp(1 + sin(x3))
)