【发布时间】:2015-08-01 09:42:23
【问题描述】:
我正在尝试从数据框中删除无用的列。我使用了一个带有 if 语句的 while 循环,它似乎永远不会离开 if 语句:
it = 1
while (it < ncol(testing))
{
if ("drop" %in% CategOfData[it,])
{testing[,it]<-NULL}
else it = it + 1
}
if 循环只要不嵌套在 while 循环中就可以工作。
测试是我的包含 400 行和 12 列的数据框,
CategOfData 是一个 12 行 2 列的数据框,CategOfData 包含我的 df "testing" 的标题和它的类别,3 行包含单词 "drop"
我通过将 {testing[,it]
我不明白为什么它从不进入代码的 else 部分。这使得 while 循环无限,因为“它”永远不会增加
我会使用 for 循环,但 R 不同意,因为我正在删除列。
CategOfData 的类型:
> CategOfData [1,]
header x
"PIERRE.MARIE" "drop"
和“测试”
> head(testing[,1])
[1] PIERRE-MARIE PIERRE-MARIE PIERRE-MARIE PIERRE-MARIE PIERRE-MARIE PIERRE-MARIE
Levels: LAURENNE PIERRE-MARIE
你能帮我找出问题所在吗?
我试过这个
it = 1
rem = ncol(testing)
while (it < rem)
{
if ("drop" %in% CategOfData2[it,])
{testing[,it]<-NULL
CategOfData2 = CategOfData2[-it,]
rem = rem - 1
}
it = it + 1
}
它可以工作〜好的,但不会删除最后一列是一个drop
【问题讨论】:
标签: r loops if-statement while-loop