我可以居中对齐R数据框的指定列的所有行的文本吗?下面是一个示例:
Gene.names = c("a", "b", "c", "d", "e")
Sequence = c("AAGVEAAAEVAATEIKMEEES", "ATMKDDLADYGGYDGGYVQDYEDFM", "ATNIEQIFRSF", "GILFCGRFSSP", "SLRASTSKSESSQK")
df = data.frame(Gene.names, Sequence)
可以看出,序列具有不同的长度。我需要将序列居中对齐,然后在较短序列的两侧添加任意字母(例如X),以使所有序列均等长。
在R中甚至有可能吗?我仍在学习R,任何方向或包裹等都将非常有帮助。
谢谢。
答案 0 :(得分:2)
我们用nchar
得到字符数,找到其中的max
('mx'),从字符数中减去,除以2,如果字符数是比max
短,然后两边带有复制的'X'(paste
)的strrep
nr <- nchar(df$Sequence)
mx <- max(nr)
i1 <- ceiling((mx -nr)/2)
out <- ifelse(i1 > 0, paste0(strrep("X", i1), df$Sequence, strrep("X", i1)),
df$Sequence)
substr(out, 1, mx)
如果要查看,另一个选项是DT::datatable
library(DT)
datatable(df, options = list(columnDefs = list(list(className =
'dt-center', targets = 2))))
-以html输出
或使用htmlTable
library(htmlTable)
htmlTable(df, align = c("r", "c"))
-输出
答案 1 :(得分:1)