Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R中的For循环和数据库_R_Database_For Loop - Fatal编程技术网

R中的For循环和数据库

R中的For循环和数据库,r,database,for-loop,R,Database,For Loop,我需要加载第n个数据库,以便在Rstudio中进行进一步处理。是否可以使用for循环执行此操作 如果用手做任何事情(没有环),它看起来是这样的: d1 = read.spss("r28iall_32.sav", to.data.frame=TRUE, use.value.labels=FALSE) d2 = read.spss("r27iall_32.sav", to.data.frame=TRUE, use.value.labels=FALSE) d3

我需要加载第n个数据库,以便在Rstudio中进行进一步处理。是否可以使用for循环执行此操作

如果用手做任何事情(没有环),它看起来是这样的:

d1 = read.spss("r28iall_32.sav", to.data.frame=TRUE, use.value.labels=FALSE)
d2 = read.spss("r27iall_32.sav", to.data.frame=TRUE, use.value.labels=FALSE)
d3 = read.spss("r26iall_32.sav", to.data.frame=TRUE, use.value.labels=FALSE)
意识到只有一个数字改变,我创建了下一个向量:

c2 = c(9:28)
c2[1]='09'
c3 = c(rep("r",20))
c4 = c(rep("iall_32.sav",20))
g = rev(sort(paste0(c3,c2,c4)))
以下内容:

[1] "r28iall_32.sav" "r27iall_32.sav" "r26iall_32.sav" "r25iall_32.sav" "r24iall_32.sav" "r23iall_32.sav" "r22iall_32.sav" "r21iall_32.sav"
 [9] "r20iall_32.sav" "r19iall_32.sav" "r18iall_32.sav" "r17iall_32.sav" "r16iall_32.sav" "r15iall_32.sav" "r14iall_32.sav" "r13iall_32.sav"
[17] "r12iall_32.sav" "r11iall_32.sav" "r10iall_32.sav" "r09iall_32.sav"
创建for循环:

d = NULL
for (i in (1:20)) {
  d = read.spss(g[i], to.data.frame=TRUE, use.value.labels=FALSE)
}

当然,它只返回最后一个20进制。您能告诉我每次如何将这些数据库保存到数据部分以获取d1、d2、d3等吗?

您可以将数据集作为元素添加到列表中:

d = list
for (i in (1:20)) {
  d[[i]] = read.spss(g[i], to.data.frame=TRUE, use.value.labels=FALSE)
}
或者将每个变量指定给一个单独的变量(但我推荐第一个):


非常感谢你!
d = 1:20
for (i in (1:20)) {
  assign(d[i], read.spss(g[i], to.data.frame=TRUE, use.value.labels=FALSE))
}