R语言数据类型2:Vectors向量的创建与基本规则

#代码星辉·七月创作之星挑战赛#

R语言数据类型2:Vectors向量的创建与基本规则

1.向量类型

  • 整数型(integer)
  • 字符型(包含字符串)(character and string)
  • 逻辑型(logical)
  • 双精度型(double)
  • two rare types: complex and raw

2.创建向量

  • 将值组合为向量或列表:c(...)

    所有参数都被强制转换为共同的类型,这是返回值的类型,并且除了名称之外的所有属性都被移除。

a <- c(1, 2, 5, 3, 6, -2, 4) #整数型
b <- c("one", "two", "three") #字符型
c <- c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE)#逻辑型
d <- c(1, 2.5, 4.5)#双精度型
  • 确定向量的类型: typeof()
  • 确定向量的长度:length()
typeof(a)
typeof(b)
typeof(c)
typeof(d)

‘double’

‘character’

‘logical’

‘double’

3.缺失值的概念(Missing values)

R用特殊哨兵值NA(不适用,简称not applicable)表示缺失或未知值。

is.na():检测缺失值的存在

4.强制类型转换(coercion)

单个向量:所有元素必须是相同类型。
当组合不同类型时,R按照以下强制转换优先级自动统一类型:

character (字符) > complex (复数) > double (浮点) > integer (整数) > logical (逻辑)

e <- c("a",1)           # 整数 → 字符
f <- c(TRUE, 10)        # 逻辑型 → 数值型
g <- c(3.14, 5L)        # 整数 → 浮点型 
e
f
g
  1. 'a'
  2. '1'
  1. 1
  2. 10
  1. 3.14
  2. 5

手动进行类型强制转换:as.()

as.logical(c(0, 1, 2, -5, 3.14))# (所有非零为真)
as.integer(c(TRUE, FALSE))
as.double(c(TRUE, FALSE,2))
as.character(c(1:3, pi, 1/0, -1/0))
  1. FALSE
  2. TRUE
  3. TRUE
  4. TRUE
  5. TRUE
  1. 1
  2. 0
  1. 1
  2. 0
  3. 2
  1. '1'
  2. '2'
  3. '3'
  4. '3.14159265358979'
  5. 'Inf'
  6. '-Inf'

as.logical():转换为逻辑值

转换规则

  • 数值/字符 → 逻辑值(TRUE/FALSE)
  • 非零数字 → TRUE
  • 0 → FALSE
  • 特定字符:“true”/“TRUE” → TRUE,“false”/“FALSE” → FALSE
  • 其他情况 → NA(带警告)

as.integer():转换为整数值

转换规则

  • 浮点数 → 截断小数部分
  • 字符 → 必须为纯整数格式
  • 非数字字符 → NA(带警告)

as.double() / as.numeric():转换为浮点数

转换规则

  • 整数字符串 → 转为浮点数
  • 科学计数法 → 正常解析
  • 非数字 → NA(带警告)

as.character():转换为字符串

转换规则

  • 所有类型 → 转为字符表示
  • 日期 → ISO格式字符串
  • 因子 → 因子标签(本质是字符串存储)
  • 永不产生NA(所有类型都可字符串化)

5.访问向量中的元素

v <- c("a", "b", "c", "d", "e")

# 单个元素访问
v[1]     # 第一个元素 → "a"
v[3]     # 第三个元素 → "c"

# 多个不连续元素
v[c(1, 3, 5)]  # → c("a", "c", "e")

# 连续元素范围
v[2:4]   # → c("b", "c", "d")

# 负索引(排除元素)
v[-1]    # → c("b", "c", "d", "e") (排除第一个)
v[-c(2,4)] # → c("a", "c", "e")   (排除第二和第四个)

‘a’

‘c’

  1. 'a'
  2. 'c'
  3. 'e'
  1. 'b'
  2. 'c'
  3. 'd'
  1. 'b'
  2. 'c'
  3. 'd'
  4. 'e'
  1. 'a'
  2. 'c'
  3. 'e'
v <- c(10, 20, 30, 40, 50)

# 条件过滤
v[v > 25]         # → c(30, 40, 50) (值大于25的元素)
v[v %% 3 == 0]    # → 30 (能被3整除的元素)

# 手动指定逻辑向量
logical_idx <- c(TRUE, FALSE, TRUE, FALSE, TRUE)
v[logical_idx]   # → c(10, 30, 50)
  1. 30
  2. 40
  3. 50

30

  1. 10
  2. 30
  3. 50

参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值