使用R创建字母的连续列表

52

我希望能够在R中创建一个字母序列(以帮助导入SPSS文件中的数据)。

创建数字序列非常容易,例如:

seq(1,1000)
[1] 1 2 3 4 5 6 ... 1000

paste("something_",1:12,sep="")
[1] something1 something2 ... something12

但是是否有任何可以像这样附加、粘贴或创建字母序列的功能呢?

paste("This_",a:z,sep="")
[1]This_a This_b This_c ... This_4z
4个回答

65

这就是你要找的内容:

> paste("This_", letters, sep="")

> [1] "This_a" "This_b" "This_c" "This_d" "This_e" "This_f" "This_g" "This_h"
  [9] "This_i" "This_j" "This_k" "This_l" "This_m" "This_n" "This_o" "This_p"
  [17] "This_q" "This_r" "This_s" "This_t" "This_u" "This_v" "This_w" "This_x"
  [25] "This_y" "This_z"

是的,没错,但有没有办法让它只在序列中前往“i”或“j”或“x”? - Brandon Bertelsen
5
找到了!paste(letters[1:12])会得到a到j的结果!谢谢! - Brandon Bertelsen
旧帖子,现在我们可以使用 paste0("This_", letters) - zx8754

24

你是否查看了

?LETTERS

那不是你想要的吗?否则,可以使用paste()和相关函数。

编辑:也许collapse=参数可以满足你的需求:

R> replicate(5, paste(sample(LETTERS, 10, replace=TRUE), collapse=""))
[1] "OHZBIYEFMD" "UINBOFEIXN" "UORJZATYNT" "ZNPWNBFFXJ" "ZOKYMTCDKZ"
R> 

感谢你在"letters"上的提示!折叠并不完全符合我的需求。 - Brandon Bertelsen

15

从 "a" 到 "z",它就是这样

letters

从“A”到“Z”,它代表

LETTERS

如果你只想要序列中的特定字母,比如 j、k 和 l,可以进行打印。

letters[10:12]

1
如果我们只想要j、k和l,有没有一种方法可以执行"j":"l",而不是print(letters[10:12]) - HNSKD
3
你可以执行 letters[which(letters == "j"):which(letters == "l")],该代码会返回从字母 "j" 到 "l" 的所有字母。 - Leonardo Siqueira
@Leonardo Siqueira的回答对我的实验学习非常有帮助。 - Unnikrishnan

2

猜想您希望获取 A-1、A-2、A-3、B-1、B-2、B-3、C-1、C-2、C-3 等等...

我尝试过这个方法

replicate(3, paste0(LETTERS[1:10], sep="-", 1:3, collapse=", ")

但是这样我得到的结果是:A-1,B-2,C-3,D-1,E-2,F-3,G-1,H-2,I-3,J-1,“A-1,B-2,C-3,D-1,E-2,F-3,G-1,H-2,I-3,J-1,A-1,B-2,C-3,D-1,E-2,F-3,G-1,H-2,I-3,J-1”。我还尝试过……
paste0(replicate(3, LETTERS[1:10]), sep = "-", 1:3)

但是得到了相同的结果...

如何获得所需的序列


2
嗨!你真的应该考虑开一个新问题。但我认为类似这样的代码:sort(paste(LETTERS[1:19], rep(1:3, 19), sep = "-")) - Brandon Bertelsen
最终,我找到了解决方案: paste0(rep(LETTERS[1:15], each = 3), sep = "-", 1:3) - Antonio Rodriguez Franco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接