我有一个想要重新排序的矩阵,这样行就以指定行尾的字符开始(在我的示例中是"~~").解释我想要什么的最简单的方法是,我希望我的矩阵右对齐,而不是左对齐.

我想不出一种简单的方法来做这件事,但我认为肯定有这种方法.

input = structure(list(V1 = c("Home", "Home", "Home", "Home", "Home"), 
    V2 = c("Asia", "Europe", "Americas", "Europe", "Asia"), V3 = c("Japan", 
    "Germany", "Washington", "France", "~~"), V4 = c("Tokyo", 
    "NRW", "~~", "Paris", "~~"), V5 = c("~~", "Dusseldorf", "~~", 
    "~~", "~~"), V6 = c("~~", "~~", "~~", "~~", "~~")), 
    class = "data.frame", row.names = c(NA, -5L))

这是我想要的输出:

output = structure(list(V1 = c("~~", "~~", "~~", "~~", "~~"), V2 = c("~~", 
    "Home", "~~", "~~", "~~"), V3 = c("Home", "Europe", "~~", "Home", 
    "~~"), V4 = c("Asia", "Germany", "Home", "Europe", "~~"), V5 = c("Japan", 
    "NRW", "Americas", "France", "Home"), V6 = c("Tokyo", "Dusseldorf", 
    "Washington", "Paris", "Asia")), 
    class = "data.frame", row.names = c(NA, -5L))

推荐答案

以下是base年中的另一种方法:

as.data.frame(t(apply(input, 1, function(r) 
                                 append(r[r != "~~"], rep("~~", sum(grepl("~~", r))), 0))))

#>   V1   V2     V3      V4       V5         V6
#> 1 ~~   ~~   Home    Asia    Japan      Tokyo
#> 2 ~~ Home Europe Germany      NRW Dusseldorf
#> 3 ~~   ~~     ~~    Home Americas Washington
#> 4 ~~   ~~   Home  Europe   France      Paris
#> 5 ~~   ~~     ~~      ~~     Home       Asia

R相关问答推荐

使用split.zoo界定xts物体的降水事件

如何判断某列中由某些行组成的百分比

在ComplexHeatmap中,如何更改anno_barplot()标题的Angular ?

提取rame中对应r中某个变量的n个最小正值和n个最大负值的条目

按块将载体转换为矩阵-reshape

找出疾病消失的受试者

如何计算前一行的值,直到达到标准?

根据选中三个复选框中的一个或两个来调整绘图

如何动态更新selectizeInput?

根据列A中的差异变异列,其中行由列B中的相对值标识

plotly hover文本/工具提示在shiny 中不起作用

try 将 colored颜色 编码添加到ggploly的标题中

在保留列表元素属性的同时替换列表元素

在R中使用列表(作为tibble列)进行向量化?

R中时间间隔的大向量与参考时间间隔的相交

在散点图中使用geom_point放置线图例

如何根据未知数的多列排除重复行

使用ifElse语句在ggploy中设置aes y值

当由base::限定时,`[.factor`引发NextMethod错误

如何合并不同列表中的数据文件,包括基于名称的部分匹配,而不是一对一等价