首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在data.table中对CJ使用动态名称

在data.table中对CJ使用动态名称
EN

Stack Overflow用户
提问于 2018-12-19 07:41:19
回答 1查看 69关注 0票数 1

我想使用具有灵活列数和灵活名称的CJ,例如

代码语言:javascript
复制
J = 3
temp = CJ(paste0('Q', 1) = 0:100)
if(J > 1){
  for(j in 2:J){
    temp = CJ(temp,paste0('Q', j) = 0:100))
  }
}

对于任意J。

其中,输出为:

代码语言:javascript
复制
CJ(Q1 = 0:100, Q2 = 0:100, Q3 = 0:100)


          Q1  Q2  Q3
      1:   0   0   0
      2:   0   0   1
      3:   0   0   2
      4:   0   0   3
      5:   0   0   4
     ---            
1030297: 100 100  96
1030298: 100 100  97
1030299: 100 100  98
1030300: 100 100  99
1030301: 100 100 100
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 07:53:09

这是do.call的典型案例

代码语言:javascript
复制
temp = do.call(CJ, replicate(J, 0:100, simplify = FALSE))
setnames(temp, paste0('Q', 1:J))
temp
#           Q1  Q2  Q3
#       1:   0   0   0
#       2:   0   0   1
#       3:   0   0   2
#       4:   0   0   3
#       5:   0   0   4
#      ---            
# 1030297: 100 100  96
# 1030298: 100 100  97
# 1030299: 100 100  98
# 1030300: 100 100  99
# 1030301: 100 100 100

可以使用setNameslapply而不是replicate在一行中构建它,但可读性要差得多。setnames几乎是即时的,所以没有效率问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53842677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档