r - 如何在单元格中分隔数值

时间:2016-07-15 16:43:28

标签: r string vector numeric

我的输入是一个文本文件:

Data
[2.3, -1.2, 3.5]
[0.1, -0.2, 4.9]

我读取txt文件的R函数是:

inputR = read.table("Data.txt", header=TRUE, sep="\t", dec=".")

我在R中的打印是:

> print(inputR)
Data
[1]  [2.3, -1.2, 3.5] 
[2]  [0.1, -0.2, 4.9]

我的目标是:

     V1    V2    V3 
[1]  2.3  -1.2  3.5    
[2]  0.1  -0.2  4.9    

当我按照你的建议尝试dput()时,结果如下:

structure(c(4L,...), .Label= c("[2.3, -1.2, 3.5]", ...), class= "factor") 

我现在改变了我的文本文件的输入,以便我克服这个问题。谢谢你们帮助我。尽管如此,如果有人找到了一个很好的解决方案,那么将来其他人也会感兴趣。

2 个答案:

答案 0 :(得分:1)

您的问题缺少"为什么"部分;可能有更好的方式来完全考虑你的问题。特别是,你使用了单词" cell"让我觉得你像电子表格一样思考,而R不是。

如果您只对输出感兴趣,可以将矢量设为一列矩阵;这将在打印时垂直排列。我经常在需要比较值时这样做,因为它们比垂直比较更容易垂直比较。此方法也会对齐小数位。

V1 <- 1:3
matrix(V1, ncol=1)
##      [,1]
## [1,]    1
## [2,]    2
## [3,]    3

答案 1 :(得分:0)

你现在得到的可能是这样的:

V1 <- c(2.3, -1.2, 3.5)
print(V1)

[1]  2.3 -1.2  3.5

如果您迫切希望它们分开,可以使用for循环或lapply

invisible(lapply(V1, print))

[1] 2.3
[1] -1.2
[1] 3.5

您甚至可以自己创作:

print2 <- function(p){

  invisible(lapply(p, print))

} 

print2(V1)

[1] 2.3
[1] -1.2
[1] 3.5

如果左边的数字非常重要:

print3 <- function(p){

  for(i in seq_along(p))
    cat(sprintf("[%s] %s\n", i, p[i]))

} 

print3(V1)
[1] 2.3
[2] -1.2
[3] 3.5