从R中的多个data.table输入创建向量 [英] creating a vector from multiple data.table inputs in R

查看:88
本文介绍了从R中的多个data.table输入创建向量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个包含来自 data.table 的连接信息的向量,称为 runVars

I am trying to create a vector that contains concatenated information from a data.table called runVars:

runVars
    calculationType calculateHCC cutOffTime historyCutOff numberOfHistroicalYears
 1:        COMPLETE         TRUE          9         FALSE                       1
 2:        COMPLETE         TRUE          9         FALSE                       2
 3:        COMPLETE         TRUE          9         FALSE                       1
 4:        COMPLETE         TRUE          9         FALSE                       2
 5:        COMPLETE         TRUE         10         FALSE                       1
 6:        COMPLETE         TRUE         10         FALSE                       2
 7:        COMPLETE         TRUE         10         FALSE                       1
 8:        COMPLETE         TRUE         10         FALSE                       2
 9:        COMPLETE        FALSE          9         FALSE                       1
10:        COMPLETE        FALSE          9         FALSE                       2
11:        COMPLETE        FALSE          9         FALSE                       1
12:        COMPLETE        FALSE          9         FALSE                       2
13:        COMPLETE        FALSE         10         FALSE                       1
14:        COMPLETE        FALSE         10         FALSE                       2
15:        COMPLETE        FALSE         10         FALSE                       1
16:        COMPLETE        FALSE         10         FALSE                       2

我要创建的向量应如下所示:

the vector I want to create should look something like this:

 [1] "histyears1_hcc1_histcut0_9m_COMPLETE"  "histyears2_hcc1_histcut0_9m_COMPLETE"  "histyears1_hcc1_histcut0_9m_COMPLETE"  "histyears2_hcc1_histcut0_9m_COMPLETE" 
 [5] "histyears1_hcc1_histcut0_10m_COMPLETE" "histyears2_hcc1_histcut0_10m_COMPLETE" "histyears1_hcc1_histcut0_10m_COMPLETE" "histyears2_hcc1_histcut0_10m_COMPLETE"
 [9] "histyears1_hcc0_histcut0_9m_COMPLETE"  "histyears2_hcc0_histcut0_9m_COMPLETE"  "histyears1_hcc0_histcut0_9m_COMPLETE"  "histyears2_hcc0_histcut0_9m_COMPLETE" 
[13] "histyears1_hcc0_histcut0_10m_COMPLETE" "histyears2_hcc0_histcut0_10m_COMPLETE" "histyears1_hcc0_histcut0_10m_COMPLETE" "histyears2_hcc0_histcut0_10m_COMPLETE"

我使用data.table方法创建了此向量:

I have created this vector using a data.table approach:

setDT(runVars)
runVars[,runName := paste0("histyears", numberOfHistroicalYears, "_hcc", as.integer(calculateHCC),
                  "_histcut", as.integer(historyCutOff), "_", cutOffTime, "m_", calculationType)]
subset <- runVars$runName

但是,我不太喜欢这个,似乎有点笨拙。我选择了 lapply(),但是我不知道这是怎么回事?

However, i do not like this very much, it seems somehow clumsy. I was opting for the lapply(), but i cannot figure out what is wrong with it?

subset <- lapply(runVars, function(x){
  paste0("histyears", x$numberOfHistroicalYears, "_hcc", as.integer(x$calculateHCC),
                  "_histcut", as.integer(x$historyCutOff), "_", x$cutOffTime, "m_", x$calculationType)
})



x $ numberOfHistroicalYears中的错误:$运算符对于
原子向量无效

Error in x$numberOfHistroicalYears : $ operator is invalid for atomic vectors

有什么办法解决这个问题吗?

Any ideas how to fix this?

推荐答案

您所拥有的是正确的,不应使用<$ c $

What you have is correct you should not use lapply here.

这里是 sprintf 的另一个变体,

library(data.table)
runVars[,runName := sprintf("histyears%s_hcc%d_histcut%d_%sm_%s",
           numberOfHistroicalYears, as.integer(calculateHCC),
           as.integer(historyCutOff), cutOffTime, calculationType)]
runVars$runName

# [1] "histyears1_hcc1_histcut0_9m_COMPLETE"  "histyears2_hcc1_histcut0_9m_COMPLETE" 
# [3] "histyears1_hcc1_histcut0_9m_COMPLETE"  "histyears2_hcc1_histcut0_9m_COMPLETE" 
# [5] "histyears1_hcc1_histcut0_10m_COMPLETE" "histyears2_hcc1_histcut0_10m_COMPLETE"
# [7] "histyears1_hcc1_histcut0_10m_COMPLETE" "histyears2_hcc1_histcut0_10m_COMPLETE"
# [9] "histyears1_hcc0_histcut0_9m_COMPLETE"  "histyears2_hcc0_histcut0_9m_COMPLETE" 
#[11] "histyears1_hcc0_histcut0_9m_COMPLETE"  "histyears2_hcc0_histcut0_9m_COMPLETE" 
#[13] "histyears1_hcc0_histcut0_10m_COMPLETE" "histyears2_hcc0_histcut0_10m_COMPLETE"
#[15] "histyears1_hcc0_histcut0_10m_COMPLETE" "histyears2_hcc0_histcut0_10m_COMPLETE"

这篇关于从R中的多个data.table输入创建向量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆