Forums | OpenR
OpenR: R & Statistics
/
【我和我的屎山代码】else in a serie of if (){}else{}can not work well
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'
30 September 2022, 10:43 AM
it seems like else only process in the last if () {}else{} structrue
how can I solve it?
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")