哪些应用函数应该用来避免下面代码中的for循环?变量标签现在是简单的占位符 - 目标是使用此过程在R中设置密码本,以便轻松导出到在SPSS中打开时密码簿准备就绪的SPSS。理想情况下,这将简化我在R中为自己的工作而工作的能力,但与使用SPSS的同事兼容。想避免在r循环中使用其中一个应用函数
data1 <- read.table(header = TRUE, sep=",",
text = "
SubjectID,Age,WeightPRE,WeightPOST,Height,SES,GenderSTR,GenderCoded
1,45,150,145,5.6,2,m,1
2,50,167,166,5.4,2,f,2
3,35,143,135,5.6,2,F,2
4,44,216,201,5.6,2,m,1
5,32,243,223,6,2,m,1
6,48,165,145,5.2,2,f,2
7,50,132,132,5.3,2,m,1
8,51,110,108,5.1,3,f,2
9,46,167,158,5.5,2,,
10,35,190,200,5.8,1,Male,1
11,36,230,210,6.2,1,m,1
12,40,200,195,6.1,1,f,2
13,45,180,185,5.9,3,f,2
14,52,240,220,6.5,2,m,1
15,24,250,240,6.4,2,M,1
16,35,175,174,5.8,2,F,2
17,51,220,221,6.3,2,m,1
18,43,230,215,2.6,2,m,1
19,36,190,180,5.7,1,female,2
20,44,260,240,6.4,3,male,1
")
var.labels = c(SubjectID="aaa",
Age="Age in Years",
WeightPRE="bbb",
WeightPOST="ccc",
Height="ddd",
SES="eee",
GenderSTR="fff",
GenderCoded="ggg")
for(i in 1:8){
attr(dtab1[[names(var.labels)[i]]],"label") <- var.labels[names(var.labels)[i]]
}
# using the haven package
# this creates SPSS datafile with variable labels
library(haven)
write_sav(dtab1,"out1.sav")
在这种情况下的for循环是完全可以接受的,但是您应该将可迭代值从'1:8'更改为'1:length(var.labels)'以保持通用。是否有你不想使用for循环的原因。 – vincentmajor