Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 데이터프레임 정보 조회
- Python
- 구구단
- 웹크롤링
- r연습문제
- 데이터프레임조회
- 네이버웹툰크롤링
- range retention
- pandas
- R실습
- 문자열함수
- 프로그래머스 풀이
- 피처벡터화
- classic retention
- 웹크롤링 예제
- R
- 조건인덱싱
- 웹크롤링 실습
- 파이썬
- 야구게임 코드
- R기초
- java
- 타자연습파이썬
- 특정값 추출
- rolling retention
- 파이썬 야구게임
- requests 모듈
- 문자열reverse
- 함컴타자연습
- 파이썬예제
Archives
- Today
- Total
서비스 기획자의 성장기록
[R 실습] 텍스트파일 불러오기 & 생성하기, 문자열 나누기, 리스트 value 값만 뽑아내기 함수 본문
Q. txt 파일을 요청사항대로 가공하기
요청사항
- txt 파일 읽기
- 공백 기준으로 split 하기
- 새로운 파일로 저장하기
- 저장된 파일 로딩하기
데이터 셋
스크립트 1: txt 파일 -> split -> txt 파일 저장
# 텍스트 파일 불러오기
raw_txt <- readLines("dts/txt2.txt")
# 공백을 기준으로 문자열 split하기
split_list <- strsplit(raw_txt, split=" ")
# 반환된 리스트에서 값만 추출하여 벡터 만들기
split_txt <- c(split_list[[1]], split_list[[2]], split_list[[3]], split_list[[4]], split_list[[5]],
split_list[[6]], split_list[[7]])
# 생성된 벡터로 txt 파일 만들기
writeLines(split_txt, "dts/split_txt_test1.txt")
#새로 생성된 txt 파일 불러오기
readLines("dts/split_txt_test1.txt")
리스트 형식의 데이터는 바로 txt 파일로 생성할 수 없어서 리스트에서 값들을 뽑아내서 새로운 벡터 변수로 저장해 주었습니다.
split_txt <- c(split_list[[1]], split_list[[2]], split_list[[3]], split_list[[4]], split_list[[5]], split_list[[6]], split_list[[7]])
결과값
해당 txt 파일이 dts 폴더에 생성되었습니다.
그런데 split_list[[ ]]을 반복하는게 번거로워서 함수로 만들면 어떨까 생각해 보았습니다. 👉 스크립트 2
스크립트 2: 리스트에서 value 값만 모아주는 함수 만들기
# 텍스트 파일 불러오기
raw_txt <- readLines("dts/txt2.txt")
# 공백을 기준으로 문자열 split하기
split_list <- strsplit(raw_txt, split=" ")
# 리스트에서 값만 뽑아내는 함수: valuein_list()
valuein_list <- function(a){
value_group <- c()
for(i in 1:length(a)){
value_group <- c(value_group, a[[i]])
}
return(value_group)
}
# 함수 리턴값을 새로운 변수에 저장해 주기
split_value <- valuein_list(split_list)
# 파일 내보내기
writeLines(split_value, "dts/split_txt_test2.txt")
# 파일 불러오기
readLines("dts/split_txt_test2.txt")
새롭게 valuein_list ( ) 함수를 정의해 주었습니다.
리스트에서 value 값만 추출해 내는 것이 훨씬 쉬워졌습니다.
결과값
해당 txt 파일이 dts 폴더에 저장되었습니다.
파일을 열어보면 스크립트 1과 동일한 내용의 파일입니다.
그런데 strsplit( )의 결과가 리스트 형식으로 반환되는 것에 대한 고민은 txt 파일로 저장하려고 했기 때문이었습니다.
교수님이 알려주신 훨씬 더 간단한 방법이 있었습니다! 🫨
스크립트 3: RData 형식으로 저장하기! (.RData 확장자, save 함수, load 함수)
# 1) 불러오기
m_txt <- readLines("dts/txt2.txt")
# 2) 분리하기
m_txt2 <- strsplit(m_txt, split=" ")
class(m_txt2) # list
names(m_txt2) # NULL
# 3) 리스트 dts object를 파일로 저장
save(m_txt2, file="dts/m_txt2.RData") # 변수 값을 그대로 복원시켜줌
# 메모리 변수 리스트 확인 및 삭제
ls()
rm(list=ls())
# 4) 파일 다시 로딩하기
load("dts/m_txt2.RData")
m_txt2
결과값
역시 사람은 배워야 하나봅니다. 😮👍
'R > R 실습' 카테고리의 다른 글
[R 실습] dataset에서 숫자를 값으로 가진 열의 합계와 평균 반환하기 (1) | 2023.10.05 |
---|---|
[R 실습] 구구단 만들기: 사용자 정의 함수, if 문, for문 (0) | 2023.10.04 |