【发布时间】:2021-01-23 05:28:28
【问题描述】:
我有一个如下所示的数据框:
# A tibble: 15 x 3
hm_variant_id x y
<chr> <dbl> <dbl>
1 10_64249655_C_T 0.0749 NA
2 10_92361338_T_C -0.0346 NA
3 10_5224192_T_C -0.0683 NA
4 10_25993366_G_C 0.0231 NA
5 10_20364_A_G NA 1.9
6 10_20665_TAAAC_T 0.0202 NA
7 10_22591_G_T NA 0.8
8 10_23187_G_A -0.250 NA
我想遍历我的数据并比较 x 和 y 并以以下方式相互更新:
if x = NA, then x = log(y)
if y = NA, then y = exp(x)
我的尝试是:
test2 <- test %>% mutate(new_or = exp(hm_beta))
但这会创建一个新列,并且不会真正比较 x 和 y。
test <- as.data.frame(test)
calculate <- function(data) {
x <- as.numeric(data["x"])
y <- as.numeric(data["y"])
if (is.na(x) == TRUE){
x <- log(y)
}
if (is.na(y) == TRUE){
y <- exp(x)
}
}
But I get this error:
Error in calculate_beta_ors(test) :
'list' object cannot be coerced to type 'double'
在这里进行最干净的方法是什么?理想情况下使用 tidyverse,但无论哪种方式都可以。
【问题讨论】: