我想知道如何用匿名函数替换这个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,]))
但这粘贴了整个专栏。
任何帮助都非常感谢!
答案 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] ))