我的问题是我不知道如何使用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,...)创建一个新变量。
答案 0 :(得分:3)
您可以使用assign
。
for (i in 1:3) {
assign(sprintf("X_%s", i), i)
}
> ls()
[1] "i" "X_1" "X_2" "X_3"
但我愿意打赌我的家人在农场打赌,这可能不是你真正追求的。使用列表可以解决很多问题,这些列表已经有了处理它们的工具(例如lapply
,sapply
...)。
答案 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>