문자열을 변수 이름으로 변환
R을 사용하여 다음 형식의 문자열 목록을 구문 분석하고 있습니다.
original_string <- "variable_name=variable_value"
먼저 원래 문자열에서 변수 이름과 값을 추출하고 값을 숫자 클래스로 변환합니다.
parameter_value <- as.numeric("variable_value")
parameter_name <- "variable_name"
그런 다음, 다음과 같은 이름을 가진 변수에 값을 할당하고 싶습니다.parameter_name현을 매다
variable_name <- parameter_value
이를 위한 기능은 무엇입니까?
할당은 당신이 찾고 있는 것입니다.
assign("x", 5)
x
[1] 5
하지만 구매자는 조심해야 합니다.
R FAQ 7.21 http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f 참조
do.call을 사용할 수 있습니다.
do.call("<-",list(parameter_name, parameter_value))
여기에 또 다른 간단한 솔루션이 있습니다. http://www.r-bloggers.com/converting-a-string-to-a-variable-name-on-the-fly-and-vice-versa-in-r/
문자열을 변수로 변환하는 방법
x <- 42
eval(parse(text = "x"))
[1] 42
그리고 그 반대:
x <- 42
deparse(substitute(x))
[1] "x"
당신이 찾고 있는 기능은get():
assign ("abc",5)
get("abc")
메모리 주소가 동일한지 확인하는 중:
getabc <- get("abc")
pryr::address(abc) == pryr::address(getabc)
# [1] TRUE
참조: R FAQ 7.21 문자열을 변수로 변환하려면 어떻게 해야 합니까?
사용하다x=as.name("string")다음을 사용할 수 있습니다.x이름 문자열이 있는 변수를 나타냅니다.
질문에 대한 답이 맞는지 모르겠습니다.
strsplit당신의 의견을 해석하기 위해서 그리고 그렉이 언급했듯이,assign변수를 할당합니다.
original_string <- c("x=123", "y=456")
pairs <- strsplit(original_string, "=")
lapply(pairs, function(x) assign(x[1], as.numeric(x[2]), envir = globalenv()))
ls()
assign좋습니다. 하지만 자동화된 스크립트에서 생성한 변수를 다시 참조하는 기능을 찾지 못했습니다.(as.name반대로 작동하는 것 같습니다.)더 경험이 많은 코더들은 의심할 여지 없이 더 나은 해결책을 가질 것이지만, 이 해결책은 아마도 R이 스스로 실행할 수 있는 코드를 작성하게 한다는 점에서 효과적이고 약간 유머러스할 것입니다.
값 5를 방금 할당했다고 가정합니다.x(var.name <- "x"; assign(var.name, 5)) 그리고 값을 6으로 변경하고 싶습니다.만약 내가 스크립트를 작성하고 있고 변수 이름이 무엇인지 미리 모른다면 (var.name)가 될 것입니다 (이것이 중요한 것으로 보입니다.assign함수), 간단히 말할 수 없습니다.x <- 6왜냐면var.name그랬을 수도 있는"y"그래서 나는:
var.name <- "x"
#some other code...
assign(var.name, 5)
#some more code...
#write a script file (1 line in this case) that works with whatever variable name
write(paste0(var.name, " <- 6"), "tmp.R")
#source that script file
source("tmp.R")
#remove the script file for tidiness
file.remove("tmp.R")
x변수 이름이 6이 아닌 다른 이름이 6으로 변경됩니다."x"그 변수도 비슷하게 6으로 변경될 것입니다.
저는 며칠 전에 이것으로 작업하고 있었고, 때때로 당신이 그것을 사용해야 한다는 것을 알아차렸습니다.get()변수의 결과를 인쇄하는 함수입니다.i:
varnames = c('jan', 'feb', 'march')
file_names = list_files('path to multiple csv files saved on drive')
assign(varnames[1], read.csv(file_names[1]) # This will assign the variable
거기서 변수를 인쇄하려고 하면varnames[1]'jan'을 반환합니다.이 문제를 해결하려면 다음 작업을 수행해야 합니다.print(get(varnames[1]))
문자열을 함수의 내부 변수로 변환하지만 전역 변수를 사용하려는 경우:
test <- function() {
do.call("<<-",list("vartest","xxx"))
}
test()
vartest
[1] "xxx"
아마도 당신의 예시의 단순성 때문에 제가 당신의 문제를 제대로 이해하지 못했을 것입니다.제가 알기로는 일련의 명령어가 문자 벡터에 저장되어 있으며, 해당 명령어는 올바른 구성원을 숫자로 캐스팅하려는 점을 제외하고는 올바른 형식에 매우 가깝습니다.
만약 제가 이해한 것이 맞다면, 저는 당신의 원래 문자열을 분할하는 것에 의존하지 않고 당신의 지시를 직접 평가하는 약간 다른 접근법을 제안하고 싶습니다.
original_string <- "variable_name=\"10\"" # Your original instruction, but with an actual numeric on the right, stored as character.
library(magrittr) # Or library(tidyverse), but it seems a bit overkilled if the point is just to import pipe-stream operator
eval(parse(text=paste(eval(original_string), "%>% as.numeric")))
print(variable_name)
#[1] 10
있는 은 여러분의 '향상'시키는 입니다.variable_name="10"될 수 있도록variable_name="10" %>% as.numeric은 와동한것에 합니다.variable_name=as.numeric("10")와 함께magrittr 현재 환경에서 이 그런 다음 현재 환경 내에서 이 표현식을 평가합니다.
8년 후 이곳을 떠돌던 누군가에게 도움이 되길 바랍니다 ;-)
에 외assign또은 " 열이지정개값체을할에당다는것다입니액문방세는법스자하른은하름이된▁is▁one다▁named것입니▁to▁to▁access▁object문▁to는자▁value▁string▁way액세▁assign스▁other하"에 액세스하는 것입니다."에 액세스하는 것입니다..GlobalEnv직접적으로.
# Equivalent
assign('abc',3)
.GlobalEnv$'abc' = 3
액스에 .GlobalEnv유연성을 제공하며, 사용 사례는 문자열 이름 목록에 값을 할당하는 것이었습니다.를 들면 를들면예,
.GlobalEnv$'x' = list()
.GlobalEnv$'x'[[2]] = 5 # works
var = 'x'
.GlobalEnv[[glue::glue('{var}')]][[2]] = 5 # programmatic names from glue()
언급URL : https://stackoverflow.com/questions/6034655/convert-string-to-a-variable-name
'programing' 카테고리의 다른 글
| Git 재설정 후 남은 스테이징되지 않은 변경 사항 --hard (0) | 2023.07.11 |
|---|---|
| 파일 기반 h2가 지속되었지만 Spring Boot에서 로드되지 않음 (0) | 2023.07.11 |
| 속성이 'IntrinsicAttributes & {children?' 유형에 없습니다.ReactNode; }' (0) | 2023.07.11 |
| Typescript 3.0에서 Tuple을 다른 Tuple 유형으로 '매핑'하는 방법 (0) | 2023.07.11 |
| Python 문자열이 [u'String']으로 인쇄됨 (0) | 2023.07.11 |