我正在尝试运行此功能并尝试获取输出。输入为矢量形式,函数的响应实际上包括矢量,而不是标量。我尝试了此代码,但无法正常工作。我是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
答案 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))
)