如何在R中为多行写'if'语句

时间:2015-04-16 05:07:28

标签: r if-statement rows

我已经生成了2个变量" x"和" y"。

a = 2
t = NULL
for(a in 2:435){ 
  t[a] <- sum(litter[a,2:13] * cos(angles))
}
x <- t/n  

b = 2
u = NULL
for(b in 2:435){ 
  u[b] <- sum(litter[b,2:13] * sin(angles))
}
y <- u/n

现在,我需要生成一个新变量&#34; r.angle&#34;符合以下条件:

if (x>0)  r.angle <- atan(y/x)
if (x<0)  r.angle <- atan(y/x) + pi 
if (x==0) r.angle <- NA 
ifelse(r.angle<0, r.angle <- r.angle + (2*pi), NA)

我不确定如何在循环遍历行的循环中写出来。

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题是正确的,您可以创建一个函数并将其应用于您的数据,如下所示:

toyData <- data.frame(x=1:9, y=9:1)

toyFunction <- function(inputData){
  x <- inputData[1]
  y <- inputData[2]
  if (x>0)  r.angle <- atan(y/x)
  if (x<0)  r.angle <- atan(y/x) + pi 
  if (x==0) r.angle <- NA 
  ifelse(r.angle<0, r.angle <- r.angle + (2*pi), NA)
  r.angle
}

apply(toyData,1,toyFunction)

您可能需要根据实际数据进行调整。