English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

R 데이터 타입

데이터 타입은 다양한 유형의 변수나 함수를 선언하는 광범위한 시스템을 의미합니다.

변수의 타입은 변수가 사용하는 공간과 저장된 비트 패턴을 설명하는 방식을 결정합니다.

R 언어에서 가장 기본적인 데이터 타입은 주로 세 가지로 구분됩니다:

  • 숫자

  • 논리

  • 텍스트

숫자 상수는 주로 두 가지로 구분됩니다:

일반 타입123    -0.125
과학적 표기법1.23e2    -1.25E-1

논리 타입은 많은 다른 프로그래밍 언어에서 부울 타입(Boolean)로 불리며, 상수 값은 TRUEFALSE

주의:R 언어는 대소문자를 구분하며, true 또는 True는 TRUE를 대체할 수 없습니다.

가장 직관적인 데이터 타입은 텍스트 타입입니다. 텍스트는 다른 언어에서 자주 나타나는 문자열(String)로, 상수는 양쪽으로 따옴표로 포함됩니다. R 언어에서 텍스트 상수는 단락 따옴표로 포함될 수도 있으며, 양쪽으로 따옴표로 포함될 수도 있습니다. 예를 들어:

> 'w3codebox' == "w3codebox"
[1] TRUE

R 언어의 변수 정의는 강한 타입 언어의 문법 규칙과는 달리, 변수에 이름과 데이터 타입을 설정하는 것이 필요하지 않습니다. R에서 할당 연산자를 사용할 때마다 새로운 변수를 정의하는 것입니다:

a = 1
b <- TRUE
b = "abc"

객체 유형에 따라 다음과 같습니다 6 이러한 유형(이하에 상세히 설명할 것입니다):

벡터

벡터(Vector)는 Java, Rust, C#과 같은 특별한 프로그래밍 언어의 표준 라이브러리에서 제공되며, 이는 벡터가 수학 연산에서 필수적인 도구이기 때문입니다. 가장 일반적인 벡터는 이차 벡터로, 이는 평면 좌표계에서 반드시 사용됩니다.

벡터는 데이터 구조상 일반적인 선형 표로, 배열로 볼 수 있습니다.

R 언어에서 벡터는 하나의 타입으로 존재하여 벡터의 연산을 더 쉽게 만듭니다:

> a = c(3, 4)
> b = c(5, 0)
> a + b
[1] 8 4
>

c()는 벡터를 생성하는 함수입니다.

이곳에서 두 개의 이차 벡터를 더하여 새로운 이차 벡터를 얻습니다 (8, 4이차 벡터와 삼차 벡터를 연산하면 수학적 의미를 잃게 됩니다. 실행이 중단되지 않지만 경고가 발생합니다.

저는 이러한 상황이 발생하지 않도록 습관을 버리는 것을 추천합니다.

벡터의 각 요소는 인덱스를 통해 단독으로 추출할 수 있습니다:

> a = c(10, 20, 30, 40, 50)
> a[2]
[1] 20

주의:R 언어의 "인덱스"는 오프셋이 아니라, 몇 번째를 의미하며, 즉 1 시작!

R은 벡터의 일부를 쉽게 추출할 수 있습니다:

> a[1:4] # 추출 1 까지 4 항, 1 및 4 항
[1] 10 20 30 40
> a[c(1, 3, 5)] # 추출 1, 3, 5 항
[1] 10 30 50
> a[c(-1, -5] # 제 1 및 5 항
[1] 20 30 40

이 세 가지 부분 추출 방법은 가장 일반적입니다.

벡터는 스칼라 계산을 지원합니다:

> c(1.1, 1.2, 1.3) - 0.5
[1] 0.6 0.7 0.8
> a = c(1,2)
> a ^ 2
[1] 1 4

이전에 설명한 일반적인 수학 연산 함수, 예를 들어 sqrt, exp 등도 벡터에 대해서 사용할 수 있습니다.

"벡터"는 선형 표 struct로서, 일반적인 선형 표 처리 함수를 가지고 있어야 합니다. R은 실제로 이러한 함수를 가지고 있습니다:

벡터 정렬:

> a = c(1, 3, 5, 2, 4, 6)
> sort(a)
[1] 1 2 3 4 5 6
> rev(a)
[1] 6 4 2 5 3 1
> order(a)
[1] 1 4 2 5 3 6
> a[order(a)]
[1] 1 2 3 4 5 6

order() 함수는 벡터가 정렬된 후의 인덱스 벡터를 반환합니다.

벡터 통계

R은 매우 완벽한 통계 함수를 가지고 있습니다:

함수 이름의미
sum합을 구하기
mean평균값을 구하기
var평균方差
sd표준편차
min최소값
max최대값
range취值 범위(이차 벡터, 최대값과 최소값)

벡터 통계 예제:

> sum(1:5)
[1] 15
> sd(1:5)
[1] 1.581139
> range(1:5)
[1] 1 5

벡터 생성

벡터 생성을 사용하여: c() 함수로 생성할 수도 있으며, min:max 연산자로 연속 시리즈를 생성할 수도 있습니다.

간격이 있는 등차수열을 생성하려면 seq 함수를 사용할 수 있습니다. 함수:

> seq(1, 9, 2)
[1] 1 3 5 7 9

seq는 m에서 n까지의 등차수열을 생성할 수 있습니다. m, n 및 수열의 길이를 지정하면 됩니다:

> seq(0, 1, length.out=3)
[1] 0.0 0.5 1.0

rep은 repeat(반복)이라는 의미로, 반복되는 숫자 시리즈를 생성할 수 있습니다:

> rep(0, 5)
[10 0 0 0 0

벡터에서 자주 사용되는 NA와 NULL에 대해 간단히 설명드리겠습니다:

  • NA는 "빈칸"을 의미하며, NULL은 "존재하지 않음"을 의미합니다.

  • NA는 대체자로, 이곳에 값이 없지만 위치는 존재하는 것을 의미합니다.

  • NULL 은 데이터가 존재하지 않는다는 것을 의미합니다.

예제 설명:

> length(c(NA, NA, NULL))
[1] 2
> c(NA, NA, NULL, NA)
[1NA NA NA

물론 NULL 은 벡터에서 어떤 의미도 없습니다.

논리형

논리형 벡터는 벡터의 논리적 연산에 사용되며, 예를 들어:

> c(1, 2, 3) > 2
[1] FALSE FALSE TRUE

which 함수는 매우 일반적인 논리형 벡터 처리 함수로, 필요한 데이터의 인덱스를 선택하는 데 사용됩니다:

> a = c(1, 2, 3)
> b = a > 2
> print(b)
[1] FALSE FALSE TRUE
> which(b)
[1] 3

예를 들어, 선형表中 크게等于 60이며 작은 70의 데이터는 다음과 같습니다:

> vector = c(10, 40, 78, 64, 53, 62, 69, 70)
> print(vector[which(vector >= 60 & vector < 70)])
[1] 64 62 69

유사한 함수로 all과 any가 있습니다:

> all(c(TRUE, TRUE, TRUE))
[1] TRUE
> all(c(TRUE, TRUE, FALSE))
[1] FALSE
> any(c(TRUE, FALSE, FALSE))
[1] TRUE
> any(c(FALSE, FALSE, FALSE))
[1] FALSE

all() 함수는 모든 요소가 TRUE로 되어 있는지 확인하며, any() 함수는 TRUE를 포함하고 있는지 확인합니다.

문자

문자 데이터 타입 자체는 복잡하지 않습니다. 여기서는 문자열操作 함수를 주로 소개합니다:

> toupper("w3codebox") # 대문자로 변환합니다
[1] "w3codebox"
> tolower("w3codebox") # 소문자로 변환합니다
[1] "w3codebox"
> nchar("中文", type="bytes") # 바이트 길이를 계산합니다
[1] 4
> nchar("中文", type="char") # 총 문자 수
[1] 2
> substr("123456789", 1, 5) # 문자열을 잘라냅니다,부터 1 까지 5
[1] "12345"
> substring("1234567890", 5) # 문자열을 잘라냅니다,부터 5 부터 끝까지
[1] "567890"
> as.numeric("12") # 문자열을 숫자로 변환합니다
[1] 12
> as.character(12.34) # 숫자를 문자열로 변환합니다
[1] "12.34"
> strsplit("2019;10;1", ";") # 문자열을 분할합니다
[[1]]
[1] "2019" "10"   "1"
> gsub("/", "-", "2019/10/1") # 문자열을 대체합니다
[1] "2019-10-1"

Windows 컴퓨터에서 구현되었으며, GBK 인코딩 표준을 사용합니다. 따라서 중국어 문자는 두 바이트입니다. UTF-8 인코딩된 컴퓨터에서 실행됩니다. 단일 중국어 문자의 바이트 길이는 다음과 같아야 합니다: 3。

R 을 사용하여 perl 언어 형식의 정규 표현식을 지원합니다:

> gsub("[[:alpha:]]+", "$", "Two words")
[1] "$ $"

更多字符串内容参考:R 언어 문자열 소개

행렬

R 언어는 선형 대수 연구에 행렬 타입을 제공하며, 이 데이터 구조는 다른 언어의 두차원 배열과 유사하지만, R은 언어 수준의 행렬 연산 지원을 제공합니다.

먼저 행렬 생성을 확인해 보겠습니다:

> vector=c(1, 2, 3, 4, 5, 6)
> matrix(vector 2, 3)
     [1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

행렬 초기화 내용은 벡터를 통해 전달됩니다. 이는 행렬이 몇 행, 몇 열인지를 표현합니다.

벡터의 값은 열별로 채워집니다. 행별로 채우려면 byrow 속성을 지정해야 합니다:

> matrix(vector 2, 3, byrow=TRUE)
     [1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6

행렬의 각 값은 직접 접근할 수 있습니다:

> m1 = matrix(vector 2, 3, byrow=TRUE)
> m1[1,1] # 제 1 행 제 1 열 
[1] 1
> m1[1,3] # 제 1 행 제 3 열
[1] 3

R의 행렬의 각 열과 행은 이름을 설정할 수 있습니다. 이 과정은 문자열 벡터를 대량으로 완료됩니다:

> colnames(m1) = c("x", "y", "z")
> rownames(m1) = c("a", "b")
> m1
  x y z
a 1 2 3
b 4 5 6
> m1["a", ]
x y z 
1 2 3

행렬의 산술 연산은 벡터와 유사하며, 스타일러스와 행렬의 해당 위치에서 연산을 할 수 있습니다.

행렬 곱셈 연산:

> m1 = matrix(c(1, 2) 1, 2)
> m2 = matrix(c(3, 4) 2, 1)
> m1 %*% m2
     [1]
[1,]   11

역행렬:

> A = matrix(c(1, 3, 2, 4) 2, 2)
> solve(A)
     [1] [,2]
[1,] -2.0  1.0
[2,]  1.5 -0.5

apply() 함수는 행렬의 각 행이나 열을 벡터로 처리할 수 있습니다:

> (A = matrix(c(1, 3, 2, 4) 2, 2))
     [1] [,2]
[1,]    1    2
[2,]    3    4
> apply(A, 1, sum) # 두 번째 파라미터는 1 행 기준 작업, sum() 함수 사용
[1] 3 7
> apply(A, 2, sum) # 두 번째 파라미터는 2 컬럼 기준 작업
[1] 4 6

更多 행렬 내용 참조:R 행렬