Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 组合列向量,然后将其合并到特定格式的数据表中_R_Vector_Merge_Datatable - Fatal编程技术网

R 组合列向量,然后将其合并到特定格式的数据表中

R 组合列向量,然后将其合并到特定格式的数据表中,r,vector,merge,datatable,R,Vector,Merge,Datatable,我想在R中创建一个数据表,以良好的格式显示最终结果。 我的最终结果如下: NENA.day <- c(42) NENA.weeks <- c(38, 40, 41) EQ.day <- c(20) EQ.weeks <- c(17, 12, 12) K.day <- c(10) K.weeks <- c(12, 15, 14) NENA.day我们可以得到列表中的向量和split将其分组 lst1 <- mget(ls(pattern = 'NENA|

我想在
R
中创建一个数据表,以良好的格式显示最终结果。 我的最终结果如下:

NENA.day <- c(42)
NENA.weeks <- c(38, 40, 41)
EQ.day <- c(20)
EQ.weeks <- c(17, 12, 12)
K.day <- c(10)
K.weeks <- c(12, 15, 14)

NENA.day我们可以得到
列表中的向量
split
将其分组

lst1 <- mget(ls(pattern = 'NENA|EQ|K'))
out <- sapply(split(lst1, sub("\\..*", "", names(lst1))), unlist)
row.names(out) <- toupper(sub(".*\\.(.)\\D+(\\d*)", "\\1\\2", row.names(out)))
由于我们有很多向量对象,在从
ls
获取对象名称作为字符串后,使用
mget
(返回一个名为
列表
)将它们放入
列表
更容易。一旦它位于
列表中
,我们就
通过从
名称中删除子字符串,即删除
列表上的“.day”和“.weeks”循环,将
列表拆分为嵌套列表组。使用
sapply
unlist
嵌套的
列表
为每个'EQ'、'K'、'NENA'创建单个
向量


或者使用
tidyverse

library(dplyr)
library(tidyr)
library(tibble)
library(stringr)
library(data.table)
enframe(lst1) %>%
   unnest(c(value)) %>% 
   separate(name, into = c('name', 'dayweek'), sep="\\.") %>%
   mutate(rn = rowid(name)) %>% 
   pivot_wider(names_from = name, values_from = value) %>% 
   select(-rn) %>%
   mutate(dayweek = str_c(toupper(substr(dayweek, 1, 1)), 
                    rowid(dayweek), sep="+")) %>%
   column_to_rownames('dayweek')
-输出

out
#   EQ  K NENA
#D  20 10   42
#W1 17 12   38
#W2 12 15   40
#W3 12 14   41
#    EQ  K NENA
#D+1 20 10   42
#W+1 17 12   38
#W+2 12 15   40
#W+3 12 14   41

对不起,这不是我想要的expected@Michi对不起,不清楚。除了
D+
W+
@Michi之外,它显示的是预期的输出,您想要一个
kable
formattable
表吗?如果我使用您的代码,这会产生错误消息。另外,我看不出你在代码中使用了我的结果向量(
EQ.day
EQ.weeks
等等)?@Michi它在
lst1中