我有一个数据框和两个名为 left
和 right
的整数向量 .
我想以这样的方式创建数据帧的子集,使得向量中的数字将指示要包括在子集中的列的范围 .
例如,对于数据框中的第n行,我想保留值 df[n,left[n]:right[n]
. 我尝试使用 mapply()
这样做:
aligned_rows<-apply(df,1,
function(x) mapply(function(y,z)x[y:z], left, right))
但得到的输出没有任何意义 .
3 回答
如上所述问题尚不清楚,希望下面的例子会给出一些提示:
这个命令可以解决问题:
这是一个例子:
应用
产量
为了使其起作用,
left
和right
定义的每个范围必须包含相同数量的元素 . 此外,left
和right
必须包含与df
中的行一样多的元素 .没有更多信息,您的问题是不适合的,因为无法保证每行中您想要的项目数量是相同的 . 请记住,数据框是一个矩形对象,即所有行必须具有相同的长度 .
获得更合理的是一个列表,它没有这个限制:
假设这导致每行的项目数相同,则可以将它们与
rbind
组合:还有其他问题,例如,您可能将来自不同列的项目组合在一起,如果它们具有不同的类,那将是荒谬的 . 但是你没有提到这个问题,所以我假设你的数据框实际上更类似于一种矩阵,这种操作更为明智 .