2016-03-22 33 views
3

R ile Rscript arasındaki komut satırı argümanlarını okumak ve bazı tamsayı işlemleri için bunlarda saklanan değerleri kullanmak istiyorum.R komut satırı argümanlarını tamsayı vektörlerine dönüştürme

#!/usr/bin/env Rscript 
arg <- commandArgs(trailingOnly = TRUE) 
x = as.vector(arg[1]) 
class(x) 
x 
y = as.vector(arg[2]) 
class(y) 
y 
cor.test(x,y) 

Bu, bu komut dosyası çıktısıdır: sayısal vektörlere

$ Rscript Correlation.R 3,3,2 4,8,6 
[1] "character" 
[1] "3,3,2" 
[1] "character" 
[1] "4,8,6" 
Error in cor.test.default(x, y) : 'x' must be a numeric vector 
Calls: cor.test -> cor.test.default 
Execution halted 

nasıl dönüştürebilir x ve y Varsayılan olarak, komut satırı argümanları karakter olarak ithal edilmektedir?

cevap

4

strsplit ve as.integer() veya as.numeric() yöntemlerini deneyebilir misiniz?

#!/usr/bin/env Rscript 
arg <- commandArgs(trailingOnly = TRUE) 
x = as.integer(strsplit(arg[1], ",")[[1]]) 
class(x) 
x 
y = as.integer(strsplit(arg[2], ",")[[1]]) 
class(y) 
y 
cor.test(x,y) 
2

x <- "3,3,2" Verilen Açıkçası , kriter üzerinde karakteri bölünmüş ve numeric yayınlayabilmek için.

as.numeric(strsplit(x,",")[[1]]) 

Başka bir yaklaşım, bu dize ifadesini bir yönergelerin parçasıymış gibi değerlendirmek olabilir. Bu çözümü daha akıllıca söylemem, ama yine de söz etmeye değer.

eval(parse(text=paste("c(",x,")",sep=""))) 
İlgili konular