【发布时间】:2016-10-02 16:47:05
【问题描述】:
apply() 允许您分别选择 MARGIN=1 或 MARGIN=2 的行或列。
但 apply 仅适用于矩阵。
例如,我有三行标题信息和三列描述信息。我需要将它们分别组合成行名和行名和列名。所以我不能轻易使用 read.table() 并跳过前 3 行,然后删除前 3 列以立即获取我的矩阵。
这不适用于数据帧,仅适用于矩阵
rownames(df)<-apply(df[,1:3], MARGIN=1,FUN=function(x){paste(x,sep=".")})
【问题讨论】:
-
你似乎只想要
do.call(paste, c(df[1:3], sep = "."))。而且您不应该尝试在数据帧上使用apply()。它适用于矩阵,在数据帧上使用它几乎总是会产生意想不到的结果。 -
Richard,这是一个很好的方法,但我认为 do.call 解析器对列表的成员,在这种情况下是列。可以修改为逐行执行此操作吗?
-
@RichScriven 最好的选择是什么?