R

时间:2016-03-09 08:14:00

标签: r for-loop

我的问题是我不知道如何使用for循环创建新变量。

我们假设有一个名为X

的矩阵
x1 x2 x3
1  2  3
4  5  6
7  8  9

我想得到的是(这很容易,但这只是一个例子)

v1=1
v2=5
v3=9

我想像这样使用for循环:

for (i in 1:3){
  v_i=X[i,i]
 }

但它不起作用,因为我不知道如何使用“i”索引(v1,v2,v3,...)创建一个新变量。

3 个答案:

答案 0 :(得分:3)

您可以使用assign

for (i in 1:3) {
  assign(sprintf("X_%s", i), i)
}

> ls()
[1] "i"   "X_1" "X_2" "X_3"

但我愿意打赌我的家人在农场打赌,这可能不是你真正追求的。使用列表可以解决很多问题,这些列表已经有了处理它们的工具(例如lapplysapply ...)。

答案 1 :(得分:0)

for循环在全局环境中执行(函数创建自己的),所以你需要为循环创建一个对象来更新

MyNewX <- vector(mode="numeric",length=3)

然后让循环更新此对象

for (i in 1:3){
  MyNewX[i] <- X[i,i]
}

答案 2 :(得分:0)

假设X是您的数据框名称

<!doctype html>
<html ng-app="plunker">
  <head>
    <script src="https://code.angularjs.org/1.4.1/angular.js"></script>
    <script src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.6.0.js"></script>
    <script src="example.js"></script>
    <link href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.1/css/bootstrap-combined.min.css" rel="stylesheet">
  </head>
  <body>

<li class="dropdown" ng-controller="DropdownCtrl">
  <a class="dropdown-toggle">
    Click me for a dropdown, yo!
  </a>
  <ul class="dropdown-menu">
    <li class="checkbox"><input type="checkbox" class="selectCheckBox" ng-click="$event.stopPropagation()"/>Option 1</li>
    <li><input type="checkbox" checked="checked" ng-click="$event.stopPropagation()"/>Option 2</li>
        <li><input type="checkbox"  ng-click="$event.stopPropagation()"/>Option 3</li>

    </ul>
</li>
  </body>
</html>