R

时间:2015-07-20 15:56:34

标签: r

我想知道如何用匿名函数替换这个for循环:

for(i in 1:length(colnames(data))){ print (paste(colnames (data)[i],data[1,i])) }

我在考虑:

lapply(data,function(x) paste(colnames(data)[x],data[1,x] ))

但是这给了我错误:

Error in `[.data.frame`(data, 1, x) : undefined columns selected

还试过

lapply(data,function(x) paste(colnames(data)[x], data[1,]))

但这粘贴了整个专栏。

任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:3)

在我看来,你可以放弃循环,而是执行以下操作。

paste(colnames(data), unlist(data[1, ]))

如果您希望它与print()循环中使用for()的输出相似,那么您可以使用rbind()进行包装。

答案 1 :(得分:2)

你正在申请错误的事情。在循环中,您将数字从1循环到某个东西。

这是有效的,我所改变的只是第一个论点:

lapply(1:length(colnames(data)), function(x) paste(colnames(data)[x],data[1,x] ))

但是,你可能也想要一点点。

sapply(1:length(colnames(data)), function(x) paste(colnames(data)[x],data[1,x] ))