Forums | OpenR

OpenR: R & Statistics /
【我和我的屎山代码】else in a serie of if (){}else{}can not work well


Zhongpu Yang's profile picture
Posts: 3

30 September 2022, 10:40 AM

df_iris = iris

df_setosa=data.frame()
df_versicolor=data.frame()
df_virginica=data.frame()
a=1
b=1
c=1
x=1:150
for (i in x)
{
y = df_iris[i,1:5]
if
(df_iris[i,'Species'] == "setosa")
{df_setosa[a,1:5] = y
a=a+1}
if
(df_iris[i,'Species'] == "versicolor")
{df_versicolor[b,1:5] = y
b=b+1}
if
(df_iris[i,'Species'] == "virginica")
{df_virginica[c,1:5] = y
c=c+1}
}
write.csv(df_setosa, "setosa.csv")
write.csv(df_versicolor,"versicolor.csv")
write.csv(df_virginica,"virginica.csv")

#'this can work well but else seem can not work below'

 

df_iris = iris

df_setosa=data.frame()
df_versicolor=data.frame()
df_virginica=data.frame()
a=1
b=1
c=1
x=1:150
for (i in x)
{
y = df_iris[i,1:5]
if
(df_iris[i,'Species'] == "setosa")
{df_setosa[a,1:5] = y
a=a+1}
if
(df_iris[i,'Species'] == "versicolor")
{df_versicolor[b,1:5] = y
b=b+1}
else
{df_virginica[c,1:5] = y
c=c+1}
}
write.csv(df_setosa, "setosa.csv")
write.csv(df_versicolor,"versicolor.csv")
write.csv(df_virginica,"virginica.csv")

#'this output will be like virginica and setosa both in virginica document'

Zhongpu Yang's profile picture
Posts: 3

30 September 2022, 10:43 AM

it seems like else only process in the last if () {}else{} structrue 

how can I solve it? 

Zhongpu Yang's profile picture
Posts: 3

30 September 2022, 10:46 AM

#'OH! by some one's reminding I tried to use another else before the second if and it seems can run suuuuuccessfully!'

df_iris = iris

df_setosa=data.frame()
df_versicolor=data.frame()
df_virginica=data.frame()
a=1
b=1
c=1
x=1:150
for (i in x)
{
y = df_iris[i,1:5]
if
(df_iris[i,'Species'] == "setosa")
{df_setosa[a,1:5] = y
a=a+1}
else
if
(df_iris[i,'Species'] == "versicolor")
{df_versicolor[b,1:5] = y
b=b+1}
else
{df_virginica[c,1:5] = y
c=c+1}
}
write.csv(df_setosa, "setosa.csv")
write.csv(df_versicolor,"versicolor.csv")
write.csv(df_virginica,"virginica.csv")

3 results