R 将列值粘贴到数据框中
我试图将行名与所需列中的数据粘贴在一起。我写了下面的代码,但不知怎的找不到正确的方法 所需输出为:R 将列值粘贴到数据框中,r,R,我试图将行名与所需列中的数据粘贴在一起。我写了下面的代码,但不知怎的找不到正确的方法 所需输出为:“a,1,11”“b,2,22”“c,3,33” 两个要点: 使用apply而不是do.call(粘贴,) 在这种情况下,使用cbind而不是c。 如果您希望使用c,则需要先将行名称强制为列表或列,例如:c(list(rownames(x)),x) 请尝试以下操作: apply(cbind(rownames(x), x[c('f1','f3')]), 1, paste, collapse=",
“a,1,11”“b,2,22”“c,3,33”
两个要点:
apply
而不是do.call(粘贴,)
cbind
而不是c
。
- 如果您希望使用
,则需要先将行名称强制为列表或列,例如:c
c(list(rownames(x)),x)
apply(cbind(rownames(x), x[c('f1','f3')]), 1, paste, collapse=",")
a b c
"a,1,11" "b,2,22" "c,3,33"
无需
do.调用或应用:
paste(rownames(x),x[[1]],x[[3]] , sep=",")
[1] "a,1,11" "b,2,22" "c,3,33"
您的do.call
指示R将列表c(行名(x),x[c('f1','f3'))
粘贴在一起。但是看看你的清单
> c(rownames(x), x[c('f1','f3')])
[[1]]
[1] "a"
[[2]]
[1] "b"
[[3]]
[1] "c"
$f1
[1] 1 2 3
$f3
[1] 11 22 33
c
命令获取每个参数的元素并将它们连接在一起。这将正确地解构x[c('f1','f3')]
但也会以您不希望的方式解构rownames(x)
。遵循标准,paste
然后从每个列表元素中获取一个项目,并使用sep=“,”
将它们修补在一起
您可以通过将rownames(x)
封装在列表结构中来解决此问题,以便正确地显示参数列表:
do.call("paste", c(list(rownames(x)), x[c('f1','f3')], sep=","))
如果将列名作为变量传递,如何避免使用apply?Setvar?如果var
则正好变成var。。do.call
和apply
都非常方便。我认为OP中的关键问题是确定使用哪一个我喜欢这个想法,除了apply
会将data.frame强制转换为矩阵。。使用do.call(粘贴,…)
可以避免这种情况。@Arun,是的,然后将强制粘贴到字符串。即使考虑到各种因素,数据也不会丢失
do.call("paste", c(list(rownames(x)), x[c('f1','f3')], sep=","))