我需要逐个元素地粘贴两个数据帧的内容,以便输入到另一个程序中。我有一个均值数据帧和一个均值标准误差数据帧。
我尝试使用R中的paste()函数,但它似乎无法处理数据帧。当使用向量时,它似乎将第一个向量的所有元素连接成一个字符串,将第二个向量的所有元素连接成另一个字符串。相反,我需要将两个数据帧中的每个互补元素连接在一起。
有什么建议可以解决这个问题吗?我已经包含了虚拟输入数据(datMean和datSE)以及我想要的输出(datNew)。我的真实数据帧大约有10行150列。
# means and SEM
datMean <- data.frame(a=rnorm(10, 3), b=rnorm(10, 3), d=rnorm(10, 3))
datSE <- data.frame(a=rnorm(10, 3)/100, b=rnorm(10, 3)/100, d=rnorm(10, 3)/100)
# what the output should look like
# i've chosen some arbitrary values here, and show only the first row.
datNew <- data.frame(a="2.889-2.926", b="1.342-1.389", d="2.569-2.576")
这个想法是让datNew中的每个元素都成为一个范围,该范围由'mean - se'和'mean + se'组成,用破折号'-'分隔。paste()函数可以对一个元素执行此操作,如何在整个数据框上执行此操作?
paste(datMean[1,1] - datSE[1,1], datMean[1,1] + datSE[1,1], sep="-")
编辑 1:看了一些答案后,我意识到在问题中遗漏了一个重要的信息。原始数据帧的每行都有名称,并且我需要使用这些名称重新构建最终的数据帧。例如:
rownames(datMean) <- LETTERS[1:10]
rownames(datSE) <- LETTERS[1:10]
我希望datNew最终能够再次拥有这10个行名称。 使用melt()的某些解决方案可能会带来问题。