【问题标题】:how can I store printed result from if statement as a dataframe?如何将 if 语句的打印结果存储为数据框?
【发布时间】:2016-08-09 21:04:37
【问题描述】:

我想将 if 语句的打印结果设置为数据框供以后使用。

例如,

如果我跑,

for(i in 1:nrow(user)){
 for(j in 1:nrow(user_info)){
     if(user[i,1]==user_info[j,1])
          df<-print(user_info[j,1:3])
  }
}

控制台显示,

1 roles user guest
     1    1    15
2 roles user guest
     2    1    367
3 roles user guest
     3    1    648

当我调用“df”时,它只显示最后一个结果。

 roles user guest
   3     1     648

如果我希望 'df' 像这样,如何将完整结果存储为数据框?

roles user guest
 1    1    15
 2    1    367
 3    1    648

为了澄清问题,这里是示例数据。 我尝试了所有的cmets,但问题还没有解决..

  • user[user[,1] %in% user_info[,1], 1:3]:输出与预期不匹配。
  • merge 和 rbind:只存储一行,而不是完整的数据。

用户:

roles  action  created_at
  10      1     2016-08-01
  10      1     2016-08-01
  1       1     2016-08-01
  3       2     2016-08-01
  4       1     2016-08-01
  5       1     2016-08-01
  5       2     2016-08-02
  8       1     2016-08-02
  9       1     2016-08-02
  7       2     2016-08-02

用户信息:

roles user guest
  1     1    15
  2     1    367
  3     14   42
  4     2    34
  5     4    2
  6     3    100
  7     23   32
  8     9    49  
  9     55   12
  10    8    291

【问题讨论】:

  • user[user[,1] %in% user_info[,1], 1:3]
  • 这条线好像不行...我应该用df&lt;-print(user_info[j,1:3])替换这条线对吗?
  • @WoobinYun 你应该用你的整个循环代码替换它。
  • @Roland Care 从您的评论中写出答案?

标签: r


【解决方案1】:

合并呢?

merge(user_info, user, by = "role")[, 1:3]

【讨论】:

    【解决方案2】:

    你可以试试rbind吗?

    for(i in 1:nrow(user)){
     for(j in 1:nrow(user_info)){
         if(user[i,1]==user_info[j,1])
              user_info<-print(user_info[j,1:3])
              df<-rbind(df,user_info)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-08-18
      • 2021-01-13
      • 2018-12-30
      • 2020-03-17
      • 1970-01-01
      • 2013-11-05
      • 2015-09-07
      • 1970-01-01
      • 2023-01-11
      相关资源
      最近更新 更多