【发布时间】:2015-08-25 00:51:07
【问题描述】:
在 bash 中,可以使用感叹号将变量的值用作变量。见explanation here。这称为变量间接扩展。这可用于在代码中使用另一个变量来命名新变量。我想知道这是否可以在 R 语言中完成。
例如,假设我想为位于公司每个建筑物的员工创建一个数据框。
head(talent_by_building)
employee building
1 345618 Pi
2 195871 E
3 247274 Pi
4 929771 Pi
5 873096 E
6 665857 E
7 791656 E
8 133673 E
9 574058 C
10 208041 C
11 402100 C
12 167792 C
13 156971 C
让“♠building”成为我想要间接扩展的变量。所以我想使用建筑物名称作为该建筑物名称的新变量。我在这里使用 ♠ 字符,因为使用 ! (因为它在 bash 中的变量前面使用)引起了一些混乱。
completed_list <- c("") #Clear out vector
for(building in talent_by_building$building){
if(!(building %in% completed_list)){
♠building<-talent_by_building[talent_by_building$building %in% building,]
}
append(completed_list,building)
}
如果这在 R 中是可能的,那么预期的输出将是创建三个新的数据框,这些数据框为 for 循环找到的每个建筑物命名。 Pi、E 和 C:
head(pi)
employee building
1 345618 Pi
2 247274 Pi
3 929771 Pi
head(E)
employee building
1 195871 E
2 873096 E
3 665857 E
4 791656 E
5 133673 E
head(C)
employee building
1 574058 C
2 208041 C
3 402100 C
4 167792 C
5 156971 C
有没有办法使用建筑物名称作为新值的名称?所以代替 ♠building 变量的值将被替换为变量名。我可以在 bash 中做到这一点,我想知道这在 R 中是否可行。
【问题讨论】:
-
如果您使输入可重现会更容易,即。使用
dput或类似的东西,以便我们可以轻松地将复制粘贴到 R 中并准备好您的示例 -
我不明白这里想要的输出。请定义所有变量以解决您的问题reproducible。我想你可能只想要
x[[building]]<-?但我不知道x应该在这里。与其要求翻译语法,不如专注于描述你想在 R 中解决的问题。 -
对不起,我已经用 ♠building 替换了 x[building]。这是为了象征我正在寻找的 R 功能。我不是在寻找对我的语法的更正。我也不能提供我所有的代码,因为它是公司代码,并且工作代码与问题无关。我不是在寻找正确的代码。我正在寻找我在 bash 中使用的功能的 R 等效项。
标签: r indirection variable-substitution