【问题标题】:R - Assign ifelse output and data.tableR - 分配 ifelse 输出和 data.table
【发布时间】:2018-04-11 01:30:08
【问题描述】:

我正在尝试根据条件(ifelse)将数据表分配给新变量。

当我运行第一行时,数据表 DT2 作为列表返回,并且只有 DT1 第一列的值。 当我运行第二行时,数据表作为包含所有列和行的数据表正确分配给变量。

为什么第一个替代方案不起作用?

library(data.table)
DT1 = data.table(x=rep(c("a","b","c"),each=3),y=c(1,3,6), v=1:9)
n <- 1

DT2 <- ifelse(n>0, DT1, NA) # line 1
ifelse(n>0, DT2 <- DT1, NA) # line 2

【问题讨论】:

  • 你想要的输出是什么?你给ifelse 的两次电话对我来说都没有任何意义。
  • 如果满足某个条件,我需要将数据表DT1分配给一个新变量作为数据表。
  • 我不明白你的评论。
  • 抱歉,编辑了第一条评论并附上了完整的答案。
  • 请描述您希望将特定行(或列)分配给新数据框的条件。我想这与一些计数有关,可能是因为您使用n 作为条件。但目前 n>0 只是一个假值。您必须描述情况。

标签: r


【解决方案1】:

ifelse 的问题在于它是矢量化的,并且您不希望这种行为用于您的逻辑。您可以尝试以下解决方法:

n <- 1
DT2 <- NA
if (n > 0) DT2 <- DT1

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 1970-01-01
    • 2020-04-20
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-06
    相关资源
    最近更新 更多