首页 > 解决方案 > 关于命名中r语言的简单问题

问题描述

我是 r 的开发初学者。我有一个关于 r 语言的简单问题。感谢这个网站的许多专家,我进步了很多。我一直很感激,任何提出这个问题的人,提前谢谢你。

这是代码。

Data=sample(1:5,size=25,replace=T)
names(Data)=c("a","b","c","d","e")

我想将 1,2,3,4,5 中的每一个命名为 a,b,c,d,e。所以我想我可以通过使用上面的代码来完成这个。

我知道正确的代码是

Data=c("a","b","c","d","e")[Data]

但我不明白为什么这是正确的代码以及为什么我需要最后一个 [Data]。

任何帮助将非常感激!!提前非常感谢你!!:)

标签: r

解决方案


最后Data一个为 中的子集值提供索引c("a","b","c","d","e")

让我们举一个简单的例子:

考虑,

a <- 1:10

现在要获得第一个值,a您可以这样做

a[1]
#[1] 1

要获得第三个价值,a您可以这样做

a[3]
#[1] 3

要获得第 6 和第 8 值,a您可以这样做

a[c(6, 8)]
#[1] 6 8

如果重复某个索引会发生什么?假设您选择 1 两次和 3 一次。

a[c(1, 1, 3)]
#[1] 1 1 3

如您所见,第一个值被选择了两次,第三次被选择。

现在,Data您已经充当了子集的索引,而a成为c("a","b","c","d","e")

a <- c("a","b","c","d","e")
set.seed(123)
Data=sample(1:5,size=25,replace=T)
Data
#[1] 3 3 2 2 3 5 4 1 2 3 5 3 3 1 4 1 1 5 3 2 2 1 3 4 1

现在你使用这个Data值来从a给定子集

a[Data]
#[1] "c" "c" "b" "b" "c" "e" "d" "a" "b" "c" "e" "c" "c" "a" "d" "a" "a" "e" "c" "b" "b" "a" "c" "d" "a"

附带说明,有一个内置常量lettersLETTERS它提供 26 个小写和大写字母。

letters
 #[1] "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"
LETTERS
# [1] "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"

推荐阅读