Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R获取字母索引_R - Fatal编程技术网

R获取字母索引

R获取字母索引,r,R,我是一个带R的noob。我想要一个单词中每个字母的字母索引。我不明白我做错了什么,因为单独的命令工作得很好 word <- "helloworld" l <- numeric(nchar(word)) for (i in 0:nchar(word)) { l[i] <- match(substr(word,i,i+1), letters) } l 返回一个奇怪的[1]NA NA NA 4 当matchsubstrword为0,1时,字母返回相应的[1]8代码有两个问题 第

我是一个带R的noob。我想要一个单词中每个字母的字母索引。我不明白我做错了什么,因为单独的命令工作得很好

word <- "helloworld"
l <- numeric(nchar(word))
for (i in 0:nchar(word)) {
  l[i] <- match(substr(word,i,i+1), letters)
}
l
返回一个奇怪的[1]NA NA NA 4


当matchsubstrword为0,1时,字母返回相应的[1]8

代码有两个问题

第一个R索引从1开始,所以当i=0时,l[i]是未定义的

其次,它不是一次只写一封信

i = 1
substr(word,i,i+1)
[1] "he"
另一种方法

setNames(1:26, letters)[ strsplit("hello", NULL )[[1]] ]

你的代码有两个问题

第一个R索引从1开始,所以当i=0时,l[i]是未定义的

其次,它不是一次只写一封信

i = 1
substr(word,i,i+1)
[1] "he"
另一种方法

setNames(1:26, letters)[ strsplit("hello", NULL )[[1]] ]
错误在于i+1:您得到两个字符串,因此找不到匹配项。使用矢量化的子字符串:

match(substring(word,1:nchar(word),1:nchar(word)),letters)
#[1]  8  5 12 12 15 23 15 18 12  4
另一个令人讨厌的方法是获取每个字符的ASCII值到字符a值的偏移量:

错误在于i+1:您得到两个字符串,因此找不到匹配项。使用矢量化的子字符串:

match(substring(word,1:nchar(word),1:nchar(word)),letters)
#[1]  8  5 12 12 15 23 15 18 12  4
另一个令人讨厌的方法是获取每个字符的ASCII值到字符a值的偏移量:


你测试了唯一可以工作的星座

向量从R中的1开始计数,循环从1到 ncharword 看一看吗。您必须定义开始和结束 停止,因此你必须使用substrword,i,i 但这里不必使用循环。正如Richard Telford所建议的,您可以将字符串转换为字符向量。然后将该向量的每个元素与字母向量匹配

lapply(strsplit(word, ""), match, letters)

你测试了唯一可以工作的星座

向量从R中的1开始计数,循环从1到 ncharword 看一看吗。您必须定义开始和结束 停止,因此你必须使用substrword,i,i 但这里不必使用循环。正如Richard Telford所建议的,您可以将字符串转换为字符向量。然后将该向量的每个元素与字母向量匹配

lapply(strsplit(word, ""), match, letters)