我可以居中对齐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,任何指示或包装等都会非常有帮助。
谢谢。
我们用nchar
得到字符数,找到那些('mx')的max
,从字符数减去那个,除以2,如果字符数比max
短,那么两边的paste
复制'X'(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))))
-output in html
或者使用htmlTable
library(htmlTable)
htmlTable(df, align = c("r", "c"))
- 输出