我想在一个简单的矩阵上执行一些操作,让我们说:
<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fitsSystemWindows="true">
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:fitsSystemWindows="true"
app:toolbarId="@+id/action_bar"
android:layout_height="match_parent"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
<com.rbrlnx.cover.GroupSummaryCoverView
android:layout_below="@id/action_bar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/group_summary_cover_view"
app:layout_collapseMode="parallax"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:fitsSystemWindows="true"/>
</android.support.design.widget.CollapsingToolbarLayout>
</android.support.design.widget.AppBarLayout>
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<include layout="@layout/group_info_title_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/group_detail_components_lateral_margin"
android:layout_marginRight="@dimen/group_detail_components_lateral_margin"
android:layout_marginLeft="@dimen/group_detail_components_lateral_margin"/>
<View android:id="@+id/name_setting_divider"
android:layout_height="@dimen/space_medium"
android:layout_width="match_parent"
style="@style/group_detail_list_top_divider"/>
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/lv_participants"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>
我想做的事情:在固定行的矩阵的某些值上添加一个数字(例如100)(即应该有固定的距离),但是会有所不同(即这里应该没有模式) )专栏。
例如,在进行一些修改后,请查看所需的输出:
aaa <- matrix(runif(200), ncol=5)
aaa
我还有一个要修改的列矩阵:
aaa[1:5, c(3,5)] <- aaa[1:5, c(3,5)] + 100
aaa[11:15, c(1,2)] <- aaa[11:15, c(1,2)] + 100
aaa[21:25, c(4,5)] <- aaa[21:25, c(4,5)] + 100
aaa[31:35, c(1,5)] <- aaa[31:35, c(1,5)] + 100
aaa
以及以下行索引向量
bbb <- matrix(cbind(c(3,5),c(1,2),c(4,5),c(1,5)), ncol = 4)
这可以通过使用循环来解决,但它也可以通过矢量化来解决吗?根据我的理解,这是不可能的,因为列是变化的。或者我错过了什么?
答案 0 :(得分:2)
是的,可以使用以下形式的代码完成:
Mat[ cbind( rows, cols) ] <- vals
我认为你的期望并不重要:索引是正确的。你可以这样做:
Idx <- cbind( rep( 1:5, 2), rep( c(2,5), 5) )
aaa[Idx]<-aaa[Idx]+100
您可以构建来自&#39; bbb&#39;和&#c; ccc&#39;用:
cbind( ccc, # will get recycled
c( apply(bbb,2, rep, each=5) ) )
然后:
Idx <- cbind( ccc, c( apply(bbb, 2, rep, each=5) ) )
aaa[ Idx] <- aaa[Idx]+100