如何在 R 中为多行编写 'if' 语句
How to write 'if' statement in R for multiple 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
现在,我需要生成一个具有以下条件的新变量 "r.angle":
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)
我不确定如何在遍历行的循环中写出它。
如果我理解你的问题是正确的,你可以创建一个函数并将其应用于你的数据,如下所示:
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)
您可能需要根据实际数据进行调整。
我生成了 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
现在,我需要生成一个具有以下条件的新变量 "r.angle":
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)
我不确定如何在遍历行的循环中写出它。
如果我理解你的问题是正确的,你可以创建一个函数并将其应用于你的数据,如下所示:
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)
您可能需要根据实际数据进行调整。