在向量

时间:2018-03-01 16:53:44

标签: r

我希望格式化矢量的输出,以便在每个X元素的换行符上打印。

例如,假设我想在字母表的每个第4个字母上打印并格式化输出:

'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X',
'Y', 'Z'

这是我尝试过的没有效果的因为我无法打印到矢量的末尾。

start_range <- 1
for (i in 1:length(LETTERS)){
  if (i %% 4 == 0){
    print(paste0(LETTERS[start_range:i], collapse = "', '"))
    start_range <- start_range + 4
  }

}

# Output 
'A', 'B', 'C', 'D',
'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X',

错过&#39; Y&#39;和&#39; Z&#39;。这种方法显然是错误的,更好的方法是什么?

2 个答案:

答案 0 :(得分:0)

我相信以下情况会这样做 对不起该功能的名称,请注明,我将对其进行编辑。

james <- function(x, n = 4){
    chunks <- length(x) %/% n
    for (i in seq_len(chunks)){
        cat(paste0("'", x[(n*(i - 1) + 1):(n*i)], "'", collapse = ", "), "\n")
    }
    cat(paste0("'", x[(n*i + 1):length(x)], "'", collapse = ", "), "\n")
}

james(LETTERS)
#'A', 'B', 'C', 'D' 
#'E', 'F', 'G', 'H' 
#'I', 'J', 'K', 'L' 
#'M', 'N', 'O', 'P' 
#'Q', 'R', 'S', 'T' 
#'U', 'V', 'W', 'X' 
#'Y', 'Z'

答案 1 :(得分:-1)

试试这个:

lst <- c('A', 'B', 'C', 'D',
'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L',
'M', 'N', 'O', 'P',
'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X',
'Y', 'Z')

print(lst[seq(1:length(lst)) %% 4 == 0])

[1] "D" "H" "L" "P" "T" "X"