从R中的多个data.table输入创建向量 [英] creating a vector from multiple data.table inputs in R
问题描述
我正在尝试创建一个包含来自 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屋!