对于丑陋的代码感到抱歉,但我不确定到底出了什么问题
for (i in 1:1)
tab_sector[1:48,i] <-
tapply(get(paste("employee",1997-1+i, "[birth<=(1997-1+i)]",sep="")),
ordered(sic2digit[birth<=(1997-1+i)],levels=tab_sector_list))
# Error in get(paste("employee", 1997 - 1 + i,
# "[birth<=(1997-1+i))]", : object 'employee97[birth<=(1997-1+i)]' not found
但变量在那里:
head(employee97[birth<=(1997-1+i)])
# [1] 1 2 2 1 3 4
一个更简单的版本,其中“员工”不受“出生”作品的限制
答案 0 :(得分:2)
您不能get
索引元素,例如get("x[i]")
失败:您需要get("x")[i]
。
你的代码也太乱了,看看发生了什么,但这是尝试翻译:
for (i in 1:1){
ind <- 1997-1+i
v1 <- get(paste0("employee",ind))
tab_sector[1:48,i] <- tapply(v1[birth<=ind],
ordered(sic2digit[birth<=ind],levels=tab_sector_list))
}
答案 1 :(得分:2)
如果你告诉我们你想要完成的事情会有所帮助。
在您的代码中,get
函数正在查找名称为“'employee97 [birth&lt; =(1997-1 + i)]”的变量,可以使用的代码是查找名称为“的变量” employee1997“然后对它进行子集化,那些是非常不同的。 get
函数不进行子集化。
您要做的部分工作是FAQ 7.21,其中最重要的部分是建议将数据存储在列表中以便于访问的结束。