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"
답변
사용 x=as.name("string")
하면 x
이름 문자열로 변수를 참조 하는 데 사용할 수 있습니다 .
귀하의 질문에 올바르게 대답하는지 모르겠습니다.
답변
찾고있는 기능은 get()
다음과 같습니다.
assign ("abc",5)
get("abc")
메모리 주소가 동일한 지 확인 :
getabc <- get("abc")
pryr::address(abc) == pryr::address(getabc)
# [1] TRUE
참조 : R FAQ 7.21 문자열을 변수로 바꾸려면 어떻게해야합니까?
답변
strsplit
입력을 구문 분석하고 Greg가 언급했듯이 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으로 변경되고 변수 이름이.이 아닌 "x"
경우 해당 변수는 유사하게 6으로 변경됩니다.