我有一个数据框,其中一些列包含带空格的级别。当我调用数据帧并将结果粘贴到read.table(text="")
时,它不起作用,因为不同行中的空格数不等。那么如何在一开始就干净地显示数据帧,这样我就可以将它复制粘贴到read.table中,指定分隔符,这样我可以快速做一个可重现的例子?另外如何删除自动数字(1,2,3,...)?
> tdat
uL Intensity sample
1 6.0 29355.00 PCAM MCH LOW-atp,E1E2,UbK48
2 4.0 36034.00 PCAM MCH LOW-atp,E1E2,UbK48
3 2.0 42571.00 PCAM MCH LOW-atp,E1E2,UbK48
4 1.0 62325.00 PCAM MCH LOW-atp,E1E2,UbK48
5 0.5 79505.00 PCAM MCH LOW-atp,E1E2,UbK48
6 25.0 25190.00 MCH Mild
7 20.0 19721.50 MCH Mild
在这个数据框中我有3列,我希望R在每列之间显示一个分隔符,这样我就可以轻松使用read.table。
答案 0 :(得分:2)
您的主要关注似乎是制作一个可重复的例子,因此,考虑到这一点,我想到了几种解决方案。
第一种是使用write.table
:
> write.table(iris, row.names=F)
"Sepal.Length" "Sepal.Width" "Petal.Length" "Petal.Width" "Species"
5.1 3.5 1.4 0.2 "setosa"
4.9 3 1.4 0.2 "setosa"
4.7 3.2 1.3 0.2 "setosa"
第二种是使用dput
:
> dput(iris[1:2, ])
structure(list(Sepal.Length = c(5.1, 4.9), Sepal.Width = c(3.5, 3), Petal.Length = c(1.4, 1.4), Petal.Width = c(0.2, 0.2), Species = structure(c(1L, 1L), .Label = c("setosa", "versicolor", "virginica"), class = "factor")), .Names = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species"), row.names = 1:2, class = "data.frame")
StackOverflow上的某个人可以复制此输出并将其分配给名称:
> my.data <- structure(list(Sepal.Length = c(5.1, 4.9), Sepal.Width = c(3.5, 3), Petal.Length = c(1.4, 1.4), Petal.Width = c(0.2, 0.2), Species = structure(c(1L, 1L), .Label = c("setosa", "versicolor", "virginica"), class = "factor")), .Names = c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width", "Species"), row.names = 1:2, class = "data.frame")
> my.data
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
答案 1 :(得分:1)
这个问题实际上没有多大意义,因为它目前的措辞 - 或者,至少我不能真正想到你所描述的用例。
然而,这是解决方法:将print
与quote = TRUE
一起使用。用你的“tdat”
> print(tdat, quote = TRUE)
uL Intensity sample
1 " 6.0" "29355.0" "PCAM MCH LOW-atp,E1E2,UbK48"
2 " 4.0" "36034.0" "PCAM MCH LOW-atp,E1E2,UbK48"
3 " 2.0" "42571.0" "PCAM MCH LOW-atp,E1E2,UbK48"
4 " 1.0" "62325.0" "PCAM MCH LOW-atp,E1E2,UbK48"
5 " 0.5" "79505.0" "PCAM MCH LOW-atp,E1E2,UbK48"
6 "25.0" "25190.0" "MCH Mild"
7 "20.0" "19721.5" "MCH Mild"
然后可以按照您的描述阅读:
## Note the single quote below
read.table(text = '<<the stuff you copied from print(tdat, quote = TRUE)>>', ...)
使用dput()
等所有建议很可能是您应该寻找的方向。
答案 2 :(得分:1)
这个问题的最佳答案似乎是将R对象复制/粘贴到剪贴板:
dput(tdat, file="clipboard")
这使用剪贴板作为文件连接,可以保存任何手动复制/粘贴。