我对编码和试图找出一项任务完全陌生,该任务告诉我们:
创建3个函数,通过手动计算来计算最低、最高和平均温度。我试着在这里找到答案,我得到了这个告诉我最大数字,但我真的不明白代码,有人能解释这个代码吗?
A1 <- as.numeric(readline(prompt = "Write the temperature for Tokyo: "))
B2 <- as.numeric(readline(prompt = "Write the temperature for Johannesburg: "))
C3 <- as.numeric(readline(prompt = "Write the temperature for Stockholm: "))
D4 <- as.numeric(readline(prompt = "Write the temperature for Oslo: "))
E5 <- as.numeric(readline(prompt = "Write the temperature for Amsterdam: "))
F6 <- as.numeric(readline(prompt = "Write the temperature for Mexico city: "))
G7 <- as.numeric(readline(prompt = "Write the temperature for Hanoi: "))
H8 <- as.numeric(readline(prompt = "Write the temperature for Canberra: "))
I9 <- as.numeric(readline(prompt = "Write the temperature for Tbilisi: "))
J10 <- as.numeric(readline(prompt = "Write the temperature for New Delhi: "))
data = data.frame(A1,B2,C3,D4,E5,F6,G7,H8,I9,J10)
datamatrix <- as.matrix(data) #Converts data into a matrix
y=-Inf
z=0
for(i in datamatrix) {
if(i>y){
y=i
if(y!=Inf){z=i}
}
else{y=Inf}
}
print(paste0("maximum number is: ", z))
A1 <- as.numeric(readline(prompt = "Write the temperature for Tokyo: "))
J10的其余部分是变量,其中值由用户定义。如果您在控制台中运行上面的行,它希望您插入一个数字。
data = data.frame(A1,B2,C3,D4,E5,F6,G7,H8,I9,J10)
datamatrix <- as.matrix(data) #Converts data into a matrix
这将准备数据
y=-Inf
z=0
for(i in datamatrix) {
if(i>y){
y=i
if(y!=Inf){z=i}
}
else{y=Inf}
}
print(paste0("maximum number is: ", z))
这部分是一个"for循环",意味着它循环(遍历(datamatrix
(A1到J10(中的每个值,并将其分配给i
变量并对其进行一些计算。{
和}
之间的for(i in datamatrix)
下面的代码是每次分配i
时运行的一块代码。
该代码块检查i是否大于y:if(i > y)
,在本例中为负无穷大。每当i
大于y
时,它都会将i
分配给y
和z
变量,但如果在任何迭代中y
大于i
,则z
变量将不会再次更改,因为y
将分配给Inf
,而i
不能大于该值。
这意味着你的函数并不总是找到最大值。您可以通过将值指定给A1到J10来测试这一点。只有在非常特殊的情况下,你才能得到最大数量。
z=-Inf
for(i in datamatrix) {
if(z < i)
z <- i
}
print(paste0("maximum number is: ", z))
此for-loop
将找到最大数量。我并不认为它是最优的,但它应该更容易理解。
它将循环遍历这些值,并检查z
是否小于i
。如果是,则i
值被分配给z
。如果循环中出现更大的数字,它将重新分配i
,但前提是它更大,这意味着您将以最高值结束upp。
希望这能有所帮助。