我有一个看起来像这样的data.frame:
Col1 Col2 Col3 ...... 30 50 90 50 50 20
我想以这种方式简单地比较每列的第1行和第2行:
如果
DF [[i]] [i]> DF [[i]] [i + 1] - > 1(因此将row1与每列的row2进行比较)
如果
DF [[i]] [i]< DF [[i]] [i + 1] - > -1
如果
DF [[i]] [i] == DF [[i]] [i + 1] - > 0
我试着编写以下功能。不幸的是它不起作用。
myfunc <- function(Data){
数据= df_a_freq
如果(!is.numeric(数据)){
停止(“参数x必须是数字”)}
值&lt; - list()
for(i in 1:length(Data)){
if(Data [[i]] [i]&gt; Data [[i]] [i + 1]){
值&lt; - 1}
否则if(Data [[i]] [i]&lt; Data [[i]] [i + 1]){
值&lt; - -1}
其他{ 值&lt; - 0
}
}
收益率(值)
}
当我运行该函数时,会发生以下错误:
如果为TRUE / FALSE ,则需要Error in if (Data [[i]] [i]> Data [[i]] [i + 1]) {:
缺失值
我不知道如何解决它。
答案 0 :(得分:1)
使用ifelse
例如:
ifelse(DF[1,] > DF[2,],1,
ifelse(DF[1,] < DF[2,],-1,0))
使用您的数据:
DF <- read.table(text= 'Col1 Col2 Col3
30 50 90
50 50 20 ',header=TRUE )
ifelse(DF[1,] > DF[2,],1,
ifelse(DF[1,] < DF[2,],-1,0))
Col1 Col2 Col3
-1 0 1