2016-07-15 56 views
-6

我的輸入是一個文本文件:的R - 我怎麼在一個單元格單獨的數值

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

我一個R函數讀取TXT文件是:

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()如你所說,結局是一樣的東西:

現在我改變了我的文本文件的輸入,讓我克服這個問題。謝謝你們幫助我。不過,如果有人找到了一個好的解決方案,那麼未來其他人會感興趣。

+0

嘗試'選項(寬度= 10)',看看你喜歡它。 – Frank

+2

你可以運行'dput(V1)'並將結果添加到你的問題中嗎? – Qaswed

+0

等一下,@Qaswed正在做點什麼。如果您直接複製了輸出,則V1不是具有三個元素的向量;如果是的話,它不會有括號或逗號。你應該支持這個問題,並給我們一個大局面。你是怎麼讀到R的?你真的想做什麼?也就是說,對你來說正確的答案可能是早些時候做一些不同的事情,而不是在這裏解決問題。 – Aaron

回答

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 

如果左邊的數字是非常imp ortant:

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 
1

您的問題缺少「爲什麼」部分;可能有更好的方法來完全考慮你的問題。特別是,你使用「單元格」這個詞讓我覺得你在想像一個電子表格,而R不是。

如果你只是對輸出感興趣,你可能會讓你的向量成爲一列的矩陣;這會在打印時垂直排列它們。當我需要比較值時,我經常這樣做,因爲它們比垂直方向比水平方向更容易比較。這個方法也會對齊小數點。

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

我開始認爲R是也可以不是能夠處理我上面提出的。可能是我必須以不同的方式儲存我的價值。 – felix

相關問題