通过colnames联合两个阵列

时间:2015-04-22 15:13:23

标签: arrays r

我有两个不同长度的命名数组:

x = setNames(c(0.3,0.5,0.1,0.2),c(4,5,7,9))
y = setNames(c(0,0,0,0,0,0,0,0,0),c(2,3,4,5,6,7,8,9,10))

我希望通过列名联合(或更好地:添加)它们,结果是:

  2    3    4    5    6    7    8    9    10
0.0  0.0  0.3  0.5  0.0  0.1  0.0  0.2   0.0

也许我应该提一下,其中一个数组实际上是类table,据我所知,它与命名数组没什么不同。

2 个答案:

答案 0 :(得分:3)

您可以对元素进行子集化,以指示名称而不是索引。这适用于您的示例:

  y[names(x)]<-x
  #  2   3   4   5   6   7   8   9  10 
  #0.0 0.0 0.3 0.5 0.0 0.1 0.0 0.2 0.0 

答案 1 :(得分:0)

不是解决方案,而是解决方法。此外,通过这种方式,您可以按名称汇总(public class AppServletContextListener implements ServletContextListener, HttpSessionAttributeListener, HttpSessionListener { @Value("${REP_MAN_INIT_SCRIPT}") private String repManInitScript; public void contextInitialized(ServletContextEvent arg0) { repManInitScript = System.getProperty("REP_MAN_INIT_SCRIPT"); System.err.println(repManInitScript ); } } ,如果正确理解了您的问题)。

<强> 数据

add

<强> 代码

x = setNames(c(0.3,0.5,0.1,0.2),c(4,5,7,9))
y = setNames(c(1, 1, 1, 1, 1, 1, 1, 1, 1),c(2,3,4,5,6,7,8,9,10))

<强> 结果

library(dplyr)

df <- full_join(data.frame(var=x) %>% mutate(names = names(x)), 
      data.frame(var=y) %>% mutate(names = names(y))) %>% group_by(names) %>% 
      summarise(var=sum(var)) %>% arrange(as.numeric(names))

z <- setNames(df$var, df$names)
z