2014-12-09 67 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 
相关问题