【发布时间】:2015-05-04 11:42:54
【问题描述】:
我正在尝试在 for 循环中使用 if 语句来比较数据框的两列的值。此处显示了我的数据框中三个相关向量的示例。
HA
1.2
1.2
1.5
0.547502826
1.7
2.4
1.2846
0.5
0.466394974
HB
11.5,
10.5,
10.95,
0.547502826,
7.6,
6.7,
3.547,
3.85,
3.346972572,
HC
13.75,
11.55,
14.95,
0.547502826,
15.9,
11.05,
5.341,
3.75,
4.545342419,
我希望循环执行的是删除 HA 和 HB 具有相同编号的行。我尝试使用这部分代码从此处显示为对象“数据”的数据框中删除这些行。
for(i in rmvalue){
if(as.numeric(rmvalue[i,"HA"])==as.numeric(rmvalue[i,"HB"])){
data<<-rmvalue[-i,]
}
然而,R 似乎只评估数据框中的第一个表达式。不确定如何继续,或者是否可以在没有 if 语句的情况下执行此过程作为解决方法。
【问题讨论】:
-
试试
data<-rmvalue[rmvalue[,"HA"]!=rmvalue[,"HB"],]。 -
R 不是 Java。它是一种矢量化语言。我建议阅读一些 R 教程。起初这会花费一些时间,但将来会为您省去很多不必要的麻烦。
-
感谢大家的反馈!实际上,我只是刚刚完成了 Robert Knell 的“Introductory R”和 Coursera 的“Data Scientist's Toolbox”和“R-Programming”,才真正开始接触编程。我必须承认,我也曾为了乐趣而使用 Codecademy 涉足 Java,这可能让我感到困惑。找到工作的乐趣,但有时也非常困难,因为办公室里没有其他人使用 R。为开源社区干杯!
标签: r if-statement for-loop