2015-04-08 27 views
1

是否可以使用read.table來讀取變量和數字在同一列中出現的數據集?這裏是行不通的例子,其次是matrix這不工作:read.table帶有同一列中的變量和數字

aa <- 10 
bb <- 20 

my.data1 <- read.table(text = ' 
    aa 0 
    0 bb 
', header = FALSE, stringsAsFactors = FALSE) 
my.data1 

# matrix returns desired output 
my.data2 <- matrix(c( aa, 0, 
         0, bb ), nrow = 2, ncol = 2, byrow = TRUE)  
my.data2 
#  [,1] [,2] 
# [1,] 10 0 
# [2,] 0 20 

我的猜測是,text轉換aabb於文字,但可以這樣可以避免同時仍然使用read.table

str(my.data1) 
'data.frame': 2 obs. of 2 variables: 
$ V1: chr "aa" "0" 
$ V2: chr "0" "bb" 
+1

這是一種不清楚。但是,通常情況下,任何原子對象只能有一個類,這包括向量,矩陣和data.frame中的變量,所以在這些結構中不能同時包含數值和字符值。 – Thomas

+0

謝謝,托馬斯。考慮發佈這個答案。雖然,爲什麼在使用'matrix'時會起作用? –

回答

2

text參數的read.table功能您輸入不轉換爲字符串,那就是創建一個字符串或字符串常量作爲引號(在讀做?Quotes的R文件(單)引號)解釋:

單引號和雙引號分隔字符常量。它們可以互換使用,但雙引號是首選(字符常量使用雙引號打印),所以單引號通常僅用於分隔包含雙引號的字符常量。

matrix命令aabb符號R中,因爲他們中沒有報價,解釋會發現在全球環境中的價值。

所以要回答你的問題:不,這是不可能的,除非你使用sprintf這樣的函數來替換字符串中的aabb的值。例如:

my.data1 <- read.table(text = sprintf(' 
    %f 0 
    0 %f', aa, bb), header = FALSE, stringsAsFactors = FALSE) 

但是這不是很常見的事情!

相關問題