【发布时间】:2019-03-07 14:27:56
【问题描述】:
我有一个包含 3 列和几千行的数据框。现在我想比较每行列中的值,看看这些值是否遵循特定趋势。
Df <- data.frame(Value1 = c(13,19,56,47,15,13,64, 48), Value2 = c(54,64,11,21,15,48,12,78), Value3 = c(66,78,05,12,21,23,45,30))
在此示例中,数据框的第 1 行将是一个向上的斜坡,而第 3 行将是一个向下的斜坡。
我写了这个 for 循环来遍历整个数据框。
for(row in 1:nrow(Df)) {
if (Df$Value1 > Df$Value2 & Df$Value2 > Df$Value3){
print("Downward slope")
} else if (Df$Value1 < Df$Value2 & Df$Value2 < Df$Value3){
print("Upward slope")
} else if (Df$Value1 > Df$Value2 & Df$Value2 < Df$Value3){
print("Dip")
} else if (Df$Value1 < Df$Value2 & Df$Value2 > Df$Value3){
print("Peak")
}
}
现在这可能已经非常低效了,但它甚至不起作用。运行时出现错误:
条件长度 > 1 且仅使用第一个元素条件长度 > 1 且仅使用第一个元素[1]“上坡”
条件的长度 > 1 且仅使用第一个元素 条件的长度 > 1 且仅使用第一个元素[1]“上坡”
我怎样才能让这样的事情发挥作用?
【问题讨论】:
-
您没有在
for循环内的任何地方使用row。例如,首先将if更改为if (Df$Value1[row] > Df$Value2[row] & Df$Value2[row] > Df$Value3[row]),其他if语句类似。
标签: r dataframe for-loop if-statement