Я решил потратить впустую свое время, фактически выполняя эту функцию именно так, как я ее описал.Я создал функцию, которая принимает фреймы данных или функции и может быть набрана или обрезана в функцию отступа.Это будет отступать от кода столько пробелов, сколько необходимо с аргументом пробела (по умолчанию четыре пробела).
indent <- function(object = "clipboard", space = 4) {
y <- if (object == "clipboard") {
as.list(readClipboard())
} else {
strsplit(as.vector(object), "[\\n]")
}
spacer <- function(x) paste(paste(rep(" ", space - 2),
collapse = ""), x)
z <- if (object == "clipboard") {
sapply(y, spacer)
} else {
lapply(y, spacer)
}
zz <- as.matrix(as.data.frame(z))
dimnames(zz) <- list(c(rep("", nrow(zz))), c(""))
noquote(zz)
}
#==========================================================
# Test it out!!!!!!
#==========================================================
indent(" id hs.grad race gender age
1 ID1 yes white male 37
2 ID2 yes white male 32
3 ID3 yes asian male 20
4 ID4 no black female 24
5 ID5 no white female 32")
#==========================================================
indent("ascii<-function(x, header=TRUE,...){
name <-textConnection(x)
DF <- read.table(name, header, ...)
close(name)
on.exit(closeAllConnections())
DF
}", space = 10)
#============================================================
# THE NEXT TWO CAN BE CUT AND PASTED WITH THE CLIPBOARD ARG
#============================================================
id hs.grad race gender age
1 ID1 yes white male 37
2 ID2 yes white male 32
3 ID3 yes asian male 20
4 ID4 no black female 24
5 ID5 no white female 32
indent("clipboard")
#============================================================
ascii<-function(x, header=TRUE,...){
name <-textConnection(x)
DF <- read.table(name, header, ...)
close(name)
on.exit(closeAllConnections())
DF
}
indent() #clipboard is the default arg not needed