我有一个包含许多参数的数据框。为了方便起见,我用3列做了一个例子。第一个由单位组成,第二个由给定的参数组成,第三个由计算的数字组成。我想要的是: - 一个合适的方式来存储单位和数字 - 一个功能,使表变化的参数(如第二个例子,风速3和4米/秒)。添加一个可以同时改变参数windspeed和density的函数会很酷。 现在我有一些有效的代码。不幸的是我必须逐行处理它。对于20种不同的风速,我认为这是很多不必要的工作。使用函数计算(错误:找不到对象)
aa <- as.data.frame(matrix(seq(100),nrow=6,ncol=3))
aa$V1 <- c("v (m/s)","Cd()", "d (m)", "A (m^2)", "N/(W*L)", "V(m/s)")
aa$V2 <- c("1", # v
"2", # Cd
"3", # d
"4", # MW/km^2
"5", # Height
"6" # coefficient
)
aa$V3[1] <- as.numeric(as.numeric(aa[4,2])^2)
aa$V3[2] <- as.numeric(as.numeric(aa[1,2]) + as.numeric(aa[2,2]))
aa$V3[3] <- as.numeric(as.numeric(aa[1,2]) * as.numeric(aa[2,2]))
aa$V3[4] <- as.numeric(as.numeric(aa[1,2]) + as.numeric(aa[2,2]) +
as.numeric(aa[3,2]))
aa$V3[5] <- as.numeric(as.numeric(aa[2,2]) + as.numeric(aa[2,3]))
aa$V3[6] <- as.numeric(as.numeric(aa[1,3]) + as.numeric(aa[2,3]))
我已经得到我想要的东西是这样的:
speed_vector <- c("w_sp_3" = 3, "w_sp_4" = 4)
make_speed <- function(x)
{
V1 <- c("v (m/s)","density (kg/m^3)","Cd()", "d (m)", "A (m^2)", "N/(W*L)",
"V(m/s)")
V2 <- c(speed_vector[x], # v
"1", # density
"2", # Cd
"3", # d
"4", # MW/km^2
"5", # Height
"6" # coefficient
)
V3 <- c(as.numeric(as.numeric(V2[4])^2),
as.numeric(as.numeric(V2[1]) + as.numeric(V2[2])),
as.numeric(as.numeric(V2[1]) * as.numeric(V2[2])),
as.numeric(as.numeric(V2[1]) + as.numeric(V2[2]) + as.numeric(V2[3])),
as.numeric(as.numeric(V2[2]) + as.numeric(V3[2])),
as.numeric(as.numeric(V3[1]) + as.numeric(V3[2])))
zz <- data.frame(V1,V2,V3)
return(zz)
}
w_speed_3 <- make_speed("w_sp_3")
w_speed_4 <- make_speed("w_sp_4")
现在我得到如下:
"Error in make_speed("w_sp_3") : object 'V3' not found".
请帮我发现其中的错误。
我真的不明白你正在试图做的,所以我不能多帮什么,但在你的'make_speed'功能创建V3'的'你是指到最后两行中的'V3'。 'V3'尚未定义,因此无法找到并且出现错误。 –
是的,在您分配V3时,您正在参考V3。 – Balter
@OriolMirosa:谢谢你的回答。我只是尝试使用更改的参数进行计算,并将其存储在列表,data.frame或类似的东西中。 – Baldrian