R 스크립트에서 여러 줄로 코드 분할
R 스크립트의 한 줄을 여러 줄로 나누고 싶습니다(너무 길어서).그걸 어떻게 하는 거죠?
구체적으로 다음과 같은 대사가 있습니다.
setwd('~/a/very/long/path/here/that/goes/beyond/80/characters/and/then/some/more')
긴 경로를 여러 줄로 분할할 수 있습니까?나는 노력했다.
setwd('~/a/very/long/path/here/that/goes/beyond/80/characters/and/
then/some/more')
와 함께return
첫 번째 줄 끝에 있는 키입니다. 그러나 이 키는 작동하지 않습니다.
감사해요.
아, 댓글이 너무 적어요.어쨌든, @Dirk는 매우 옳습니다.
R은 코드가 다음 줄에서 시작한다는 말을 들을 필요가 없습니다.그것은 Python ;-)보다 더 똑똑하며, 그 진술이 "끝나지 않았다"고 생각할 때마다 다음 줄을 계속 읽을 것입니다.사실, 당신의 경우에도 다음 줄로 갔지만, R은 "" 사이에 배치될 때 반환을 문자로 받아들입니다.
코드가 완료되지 않았는지 확인해야 합니다.비교하다
a <- 1 + 2
+ 3
와 함께
a <- 1 + 2 +
3
따라서 코드를 여러 줄에 분산시킬 때는 R이 다음 중 하나를 통해 무언가가 오고 있음을 알도록 해야 합니다.
- 브래킷을 열어둔 채로 두거나,
- 연산자로 줄 끝맺기
우리가 현악기를 말할 때, 이것은 여전히 효과가 있지만, 당신은 약간의 주의가 필요합니다.따옴표를 열 수 있으며 닫을 때까지 R이 계속 읽습니다.그러나 새 줄을 포함한 모든 문자는 문자열의 일부로 표시됩니다.
x <- "This is a very
long string over two lines."
x
## [1] "This is a very\nlong string over two lines."
cat(x)
## This is a very
## long string over two lines.
에 이. 에는 줄바꿈 문자가 수 .\n
하는 것이 .paste()
또는paste0()
더크가 청혼했어요
여러 줄에 걸쳐 코드를 해독하는 것이 아니라 단일 식별자를 사용하는 것입니다.차이가 있습니다.
당신의 문제를 위해, 시도해 보세요.
R> setwd(paste("~/a/very/long/path/here",
"/and/then/some/more",
"/and/then/some/more",
"/and/then/some/more", sep=""))
이는 또한 여러 줄에 걸쳐 코드를 해독하는 것이 완벽하게 괜찮다는 것을 보여줍니다.
위의 Dirk 방법은 확실히 효과적이지만 공백/구조를 보존해야 하는 긴 문자열을 가져오는 방법을 찾고 있다면 2단계 솔루션이 있습니다(예: RODBC를 사용한 SQL 쿼리).
여러 줄에 걸쳐 텍스트 문자열 가져오기
long_string <- "this
is
a
long
string
with
whitespace"
R은 여러 가지를 소개할 것입니다.\n
성격.로 그것들을 벗겨냅니다.strwrap()
문서에 따라 빈 공간이 파괴됩니다.
strwrap(long_string, width=10000, simplify=TRUE)
strwrap에 텍스트를 매우 긴 행으로 묶으라고 하면 공백/새줄 문자가 없는 단일 문자 벡터를 얻을 수 있습니다.
그 특정한 경우에는 다음과 같은 것이 있습니다.file.path
:
File <- file.path("~",
"a",
"very",
"long",
"path",
"here",
"that",
"goes",
"beyond",
"80",
"characters",
"and",
"then",
"some",
"more")
setwd(File)
이 게시물이 오래된 것은 알지만, 저는 이런 상황이 있었고 저의 해결책을 공유하고 싶습니다.위의 답변은 모두 정상적으로 작동합니다.그러나 구문을 연결하는 data.table과 같은 코드가 있는 경우에는 이와 같은 문제가 있었습니다.
mass <- files[, Veg:=tstrsplit(files$file, "/")[1:4][[1]]][, Rain:=tstrsplit(files$file, "/")[1:4][[2]]][, Roughness:=tstrsplit(files$file, "/")[1:4][[3]]][, Geom:=tstrsplit(files$file, "/")[1:4][[4]]][
시간_[s]<=12000]
위의 대부분의 제안을 시도해 보았지만 효과가 없었습니다. 하지만 쉼표 뒤에 구분할 수 있다는 것을 알았습니다.[]
분할 시간][
작동하지 않습니다.
mass <- files[, Veg:=tstrsplit(files$file, "/")[1:4][[1]]][,
Rain:=tstrsplit(files$file, "/")[1:4][[2]]][,
Roughness:=tstrsplit(files$file, "/")[1:4][[3]]][,
Geom:=tstrsplit(files$file, "/")[1:4][[4]]][`time_[s]`<=12000]
그glue::glue
기능이 도움이 될 수 있습니다.스크립트에서 여러 줄에 문자열을 쓸 수 있지만 각 줄을 다음으로 종료하여 문자열 개체에서 줄 바꿈을 제거할 수 있습니다.\\
:
glue("some\\
thing")
something
R에 문자열 연결을 수행할 연산자가 없기 때문에 이 작업을 수행할 수 있는 부수적인 방법이 없습니다.
그러나 문자열 연결을 수행하도록 R Infix 연산자를 정의할 수 있습니다.
`%+%` = function(x,y) return(paste0(x,y))
그런 다음 문자열을 콘타트하는 데 사용할 수 있으며 코드를 여러 줄로 구분할 수도 마찬가지입니다.
s = "a" %+%
"b" %+%
"c"
그러면 "abc"가 표시됩니다.
저는 이것을 항상 합니다.paste0() 함수를 사용합니다.
Rootdir = "/myhome/thisproject/part1/"
Subdir = "subdirectory1/subsubdir2/"
fullpath = paste0( Rootdir, Subdir )
fullpath
> fullpath
[1] "/myhome/thisproject/part1/subdirectory1/subsubdir2/"
이렇게 하면 \n 문자가 유지되지만 따옴표를 괄호로 묶을 수도 있습니다.특히 RM Markdown에서 유용합니다.
t <- ("
this is a long
string
")
언급URL : https://stackoverflow.com/questions/6329962/split-code-over-multiple-lines-in-an-r-script
'source' 카테고리의 다른 글
1 - 10 범위의 난수 생성 (0) | 2023.06.13 |
---|---|
다양한 제품을 위한 구글 서비스.json 플레이버 (0) | 2023.06.13 |
장고를 통해 이메일을 보내는 방법은? (0) | 2023.06.13 |
워드프레스의 iframe에 페이스북 그룹(일반 페이지가 아님)을 내장하는 방법은 무엇입니까? (0) | 2023.06.13 |
일반 형식 스크립트를 사용하여 인터페이스 확장 (0) | 2023.06.13 |