对于R中的循环和数据库

Semyon Yurievich疣

我需要加载第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))
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章