如何读取用户输入(字符)作为列名(对象名称)

时间:2014-06-02 10:53:16

标签: r dataset

我有一个数据集,

En     Mn    Hours  var1       var2 
1      1     1      0.1023488  0.6534707 
1      1     2      0.1254325  0.5423215 
1      1     3      0.1523245  0.2542354 
1      2     1      0.1225425  0.2154533 
1      2     2      0.1452354  0.4521255 
1      2     3      0.1853324  0.2545545 
2      1     1      0.1452369  0.2321542 
2      1     2      0.1241241  0.2525212 
2      1     3      0.0542232  0.2626214 
2      2     1      0.8542154  0.2154522 
2      2     2      0.0215420  0.5245125 
2      2     3      0.2541254  0.2542512 

var <- as.character(readline('Enter the variable of your choice')) 

var存储用户输入 例如:var1

如果我在某些R命令中使用它,请说cbind或其他任何内容,它都不起作用。 如果a是数据集a$var不起作用,则简单一个。 例如:aggregate(cbind(var)~Mn+hours,a, FUN=mean)

我有一个var1var2var3大约30列,我想从用户那里读取多个输入

就像提示用户输入他输入的变量名一样 var1 var2 var3(空格或逗号分隔,对我来说无关紧要) 然后我需要读取它们并在R命令行中使用它们来获得一些结果。

1 个答案:

答案 0 :(得分:0)

让我们说你的数据框命名为df ...用户输入的列名如你所说....

var <- as.character(readline('Enter the variable of your choice')) 

df[var] = 0 #assign actual values here... As var one named column is added

您可以在循环中运行相同的代码并创建n个列...

修改

现在,如果您想将用户输入用于各种目的,那么就是以下情况,

  1. 当您想直接使用data.frame引用列时很容易

    df[var]

  2. 当你想在某个函数或公式中引用列时,你必须这样做

    aggregate(cbind(get(var1),get(var2))~Mn+hours,a, FUN=mean)

  3. get()背后的概念是,它会将实际值(列名)放在公式中......

    <强>更新

    请参阅此特殊聚合函数: Name columns within aggregate in R

    我希望这对你有用......