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中