2011-11-30 42 views
5

Tôi muốn tạo một mảng liên kết trong R từ một chuỗi như "key1=values1;key2=value2". Tôi biết điều này có thể được thực hiện bằng cách chia đôi và xây dựng các mảng bằng tay nhưng tôi đã tự hỏi nếu có một cái gì đó tôi có thể làm việc với.Mảng kết hợp từ chuỗi

+0

thể trùng lặp của [R Chuyển đổi cặp vào data.frame] (http://stackoverflow.com/questions/8127869/r-convert-key -giá trị ghép đôi –

Trả lời

10

Sử dụng môi trường làm "mảng kết hợp" cung cấp giải pháp đơn giản.

string <- "key1=99; key2=6" 

# Create an environment which will be your array 
env <- new.env() 

# Assign values to keys in the environment, using eval(parse()) 
eval(parse(text=string), envir=env) 

# Check that it works: 
ls(env) 
# [1] "key1" "key2" 
env$key1 
# [1] 99 

as.list(env) 
# $key1 
# [1] 99 

# $key2 
# [1] 6 
2

Dưới đây là một cách tiếp cận sử dụng eval(parse)

string <- c("key1 = 10, key2 = 20") 
eval(parse(text = paste('list(', string, ")"))) 
$key1 
[1] 10 

$key2 
[1] 20 
Các vấn đề liên quan