2014-12-09 55 views
0

我有一個文件夾包含10個文件,即01.csv,02.csv .... 10.csvR編程。代碼不起作用。爲什麼?

我必須從用戶採取一串數字,但只打開相應的文件。 注意:用戶也可能輸入的數字不在1-10的範圍內,在這種情況下,我們必須返回一條說錯誤的行

這裏是我的代碼的一部分:我保存了用戶在z中的數字。現在,

for(i in seq_along(z)){ 

    if(z[i]>0 & z[i]<10){ 

    z[i] <- paste("0", z[i], sep="") 
    z[i] <- paste(z[i], "csv", sep=".") 
    a<-read.csv(z[i]) 
    print(a) 
    } 
} 

的代碼運行正常,當我輸入將z作爲單一的數字沒有像1,2,3等 但是當我鍵入Z爲數字像1的字符串:4等,只讀取第一個在這種情況下編號ie1。

爲什麼?我該怎麼做才能克服這個問題?

回答

2

如果z是一個字符串,諸如「1:4」,可以得到相應的向量如下

z <- "1:4" 
z <- eval(parse(text = z)) 
z 
# [1] 1 2 3 4 
0

可能這有助於

fun1 <- function(z){ 
    a <- vector('list', length(z)) 
    z1 <- sprintf('%02d%s', z, '.csv') 
    for(i in seq_along(z)){ 
    stopifnot(z[i] > 0 & z [i] < 10) 
    a[[i]]<-read.csv(z1[i], sep='') 
    print(a[[i]]) 
    } 
    #a 
} 

z <- 11:12 
fun1(z) 
#Error: z[i] > 0 & z[i] < 10 is not TRUE 

z <- c(1,11) 
fun1(z) 
# Col1 Col2 
#1 3 4 
#2 4 8 
#Error: z[i] > 0 & z[i] < 10 is not TRUE 

    z <- 1:2 
    fun1(z) 
    # Col1 Col2 
    #1 3 4 
    #2 4 8 
    # Col1 Col2 
    #1 3 5 
    #2 4 9 
相關問題