function(q,b,Data1,Data2){
x<-sum(
ifelse(Data1[13+q,b]/Data1[12+q,b]>Data2[13+q,1]/Data2[12+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[11+q,b]>Data2[13+q,1]/Data2[11+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[10+q,b]>Data2[13+q,1]/Data2[10+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[9+q,b]>Data2[13+q,1]/Data2[9+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[8+q,b]>Data2[13+q,1]/Data2[8+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[7+q,b]>Data2[13+q,1]/Data2[7+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[6+q,b]>Data2[13+q,1]/Data2[6+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[5+q,b]>Data2[13+q,1]/Data2[5+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[4+q,b]>Data2[13+q,1]/Data2[4+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[3+q,b]>Data2[13+q,1]/Data2[3+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[2+q,b]>Data2[13+q,1]/Data2[2+q,1],1,0)+
ifelse(Data1[13+q,b]/Data1[1+q,b]>Data2[13+q,1]/Data2[1+q,1],1,0)
)/12
}
有没有办法简化这个? (没有字符,只有数据集中的数字)
谢谢
答案 0 :(得分:2)
您可以结合使用两项知识来改进代码:
首先,您可以将一个数字除以一个向量,Window {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
id: mainwindow
DynamicTableView {
id: tableview
height: mainwindow.height - 50
width: mainwindow.width
y: 5
x: 0
model: myModel
}
Rectangle {
id: abutton
anchors.top: tableview.bottom
height: 40
width: mainwindow.width
Text {
text: "Click to Add"
anchors.fill: parent
}
MouseArea {
anchors.fill: parent
onClicked: {
TableController.AddEntry()
}
}
}
}
将返回一个带有元素分割的向量。例如:
R
不等式两侧的分子始终相同,可以使用上面的。因此,您可以只调用一次,而不是为每个不等式明确地调用它。
其次,当您尝试执行算术运算时,5 / c(1,2,3,4,5,6)
# [1] 5.0000000 2.5000000 1.6666667 1.2500000 1.0000000 0.8333333
或TRUE
的表达式将被强制转换为FALSE
和1
你的案件分工,或计算均值)。不等式返回0
或TRUE
值。明确告诉FALSE
将其转换为R
和0
是浪费精力,因为1
会在最后一步自动执行此操作。
将它们放在一起在一个简化的函数中:
R
答案 1 :(得分:0)
这简化了一下:
function(q,b,Data1,Data2){
data1_num <- Data1[13+q,b]
data2_num <- Data2[13+q,1]
x <- 0
for (i in 1:12) {
x <- x + ((data1_num/Data1[i+q,b]) > (data2_num /Data2[i+q,1]))
}
x <- x /12
#return(x)
}
但是如果您提供数据示例和您期望的输出,我确信有更好的方法来简化它