首页 > 解决方案 > 在 ifelse R 中粘贴0

问题描述

我尝试在 ifelse() 中使用 paste0 在数据表中创建条件新变量。我使用的代码如下:

data[, paste0("inc_2014_",i) := ifelse(paste0("testvar",i) == 2014, 1, 0)]

这不起作用。没有错误消息,但 inc_2014_i 的值(在我的测试用例中为 inc_2014_1)都是 0,而应该是几百个 1。

如果我测试

data[, paste0("inc_2014_",i) := ifelse(testvar1 == 2014, 1, 0)]

它工作正常。

如果我测试

paste0("testvar",i)

我得到正确的变量作为输出。

我究竟做错了什么?

标签: rif-statementdatatablepaste

解决方案


您需要遍历列来定义 i,也许您可​​以尝试:

for(i in 1:length(grep("inc_2014_", colnames(data))))
{
    data[, paste0("inc_2014_",i) := ifelse(paste0("testvar",i) == 2014, 1, 0)]
}


推荐阅读