R:可以在 mutate()(dplyr 包)中使用 exists() 函数吗?

标签 r dplyr

我想创建一个新变量,以防它不存在。如果它存在,则无需更改任何内容,但如果不存在,我想创建此变量并为其指定 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)

关于R:可以在 mutate()(dplyr 包)中使用 exists() 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28276559/

相关文章:

r - 如何根据行值中的大于条件选择列值

r - 如何在dplyr R中创建连续两年的ID

r - 是否有 R 语法来删除列中具有特定多个 NA 的行?

r - 使用 dplyr 进行管道传输时未找到对象 '.'

r - 无法在 R 中加载包

r - 使用 R 从以表达式结尾的句子中提取所有单词

r - tidyr 传播后如何控制新变量的名称?

r - 为什么Sys.setenv()在R中没有立即生效?

r - 对滑动窗口应用统计检验

r - 合并在 R 中产生意想不到的结果