我最近从STATA切换到R,并且遇到了一些循环机制(我知道循环在这里被认为是不好的形式而不是编写函数,但我的感觉是如果我能弄清楚如何获得循环要做到这一点,我可以将其应用于一个函数)。
我经常想对嵌套的变量名片段执行调用。我不能让R让我在循环或函数中插入变量名片段;救命!虽然这里的变量名是一个数字,通常是一个单词或单词片段(非数字,非顺序字符的列表,所以我想确定无论我得到什么帮助都不一定特定于插入数字!
这是一个例子。我想为我的数据框中收到特定干预的患者创建一个指标变量,称为xdata。我创建了几个(8)干预变量,并为每个变量创建了一个特定患者的列表(通过名为id的变量识别),该列表应标记为已接受该干预。
xdata <- data.frame(intervention1 = 0,
intervention2 = 0,
intervention3 = 0,
intervention4 = 0,
intervention5 = 0,
intervention6 = 0,
intervention7 = 0,
intervention8 = 0,
id = 1:2000)
ids <- list(dx1 = c(86, 1486, 1451),
dx2 = c(328, 1277,1458),
dx3 = c(535,1569,689),
dx4 = c(488,1335),
dx5 = c(1210,1425,932,1451,30,270,347,418,709,801,1278),
dx6 = c(282,721,749,1134),
dx7 = c(932,43,148,158,1441),
dx8 = c(932,801,1258))
for (i in 1:8) {
for (j in 1:length(ids[[i]]) {
parse(paste("xdata$intervention",i,"[xdata$id==",ids[[i]][j],"]<- 1"))
}
}
我希望循环要做的是按顺序执行这行代码&#34; xdata $ intervention&#34;,i,&#34; [xdata $ id ==&#34;, ids [[i]] [j],&#34;]&lt; - 1&#34;对于特定干预的每次迭代和患者列表,如适用。我希望循环做这个:
xdata$intervention1[xdata$id==86]<- 1
xdata$intervention1[xdata$id==1486]<- 1
xdata$intervention1[xdata$id==1451]<- 1
xdata$intervention2[xdata$id==328]<- 1
xdata$intervention2[xdata$id==1277]<- 1
xdata$intervention2[xdata$id==1458]<- 1
...
xdata$intervention8[xdata$id==932]<- 1
xdata$intervention8[xdata$id==801]<- 1
xdata$intervention8[xdata$id==1258]<- 1
免责声明/道歉 - 我已经看过并寻求过这方面的帮助,我的猜测是答案就在那里,但作为一个新手的一个问题是我很难知道如何构建我的框架问题所以正确答案会出现!如果这是重复的,我很抱歉;这不是因为没有尝试,我没有找到它!