R:是否可以在 mutate()(dplyr 包)中使用 exists() 函数?
R: Can exists() function be used within mutate() (dplyr package)?
我想创建一个新变量以防它不存在。如果它存在,则无需更改任何内容,但如果不存在,我想创建此变量并为其赋予 NA 值。我尝试使用 dplyr 包的 mutate 函数来执行此操作,但结果我只得到 NA。
library(dplyr)
df <- structure(list(var1 = c(47, 801, 660), var2 = c(11,
17, 11)), .Names = c("var1", "var2"), row.names = c(NA,
3L), class = "data.frame")
现在我检查 var2 是否存在。
df <- mutate(df, var2 = ifelse(exists('var2')==TRUE,var2,NA))
结果是:
var1 var2
1 47 NA
2 801 NA
3 660 NA
但是,结果应该是(因为无需更改任何内容:
var1 var2
1 47 11
2 801 17
3 660 11
有谁知道如何解决这个问题?它甚至可以用 exists() 来完成吗?非常感谢。
您可以使用
mutate(df, var2 = if (exists('var2', where = df)) var2 else NA)
我想创建一个新变量以防它不存在。如果它存在,则无需更改任何内容,但如果不存在,我想创建此变量并为其赋予 NA 值。我尝试使用 dplyr 包的 mutate 函数来执行此操作,但结果我只得到 NA。
library(dplyr)
df <- structure(list(var1 = c(47, 801, 660), var2 = c(11,
17, 11)), .Names = c("var1", "var2"), row.names = c(NA,
3L), class = "data.frame")
现在我检查 var2 是否存在。
df <- mutate(df, var2 = ifelse(exists('var2')==TRUE,var2,NA))
结果是:
var1 var2
1 47 NA
2 801 NA
3 660 NA
但是,结果应该是(因为无需更改任何内容:
var1 var2
1 47 11
2 801 17
3 660 11
有谁知道如何解决这个问题?它甚至可以用 exists() 来完成吗?非常感谢。
您可以使用
mutate(df, var2 = if (exists('var2', where = df)) var2 else NA)