2014-10-17 161 views
5

我有一個結果3列的數據幀的一些數據數據幀的列當我打印結果我看到:無法訪問

results 

TIMESTAMP     SYMBOL_NAME   "t.price" 
1 2014-10-17 14:00:00  GOOG     400.25 

的通知「」周圍的t.price列

當我去訪問t.price列,就像它返回null。

results$t.Price 
NULL 

當我做

names(results) 

我看到

[1] "TIMESTAMP"  "SYMBOL_NAME"  "\"t.PRICE\"" 

你能告訴我是怎麼回事,爲什麼「」的出現或者我如何可以訪問t.price?

+0

如果你鍵入'結果$「t.PRICE」'或'結果$ \「t.PRICE \」會發生什麼'? – dg99 2014-10-17 22:30:35

+0

東西發生在你讀完數據之後 - 一個簡單而快速的解決方法是通過..'names(results)< - c([「TIMESTAMP」,「SYMBOL_NAME」,「t.PRICE」)'重命名你的變量。看看'str(results)' – user20650 2014-10-17 22:31:39

+0

你也可以使用results [,3]來訪問那個列 – Sarah 2014-10-17 22:37:48

回答

3

試試這個:

names(results) <- make.names(names(results)) 

這就是當使用read.table及其後代是被應用了相同的功能。

+1

我想這不是太重要,但是當我運行這個時,我在最後一列得到了'X.t.price'。那是你得到的嗎? – 2014-10-17 22:47:24

+0

我沒有原始對象,因爲它沒有以可重現的形式呈現,但是,是的,這就是我現在使用'make.names'得到的結果,並且對於您的下一個問題,這不是我所預測的。 – 2014-10-17 23:49:27

3

您可以刪除多餘的報價與gsub

results 
#    TIMESTAMP SYMBOL_NAME "t.price" 
# 1 2014-10-17 14:00:00  GOOG 400.25 
results$t.price 
# NULL 
names(results)[3] <- gsub('\"', "", names(results)[3]) 
results$t.price 
# [1] 400.25 

爲安全起見,您可能希望對數據集的所有名稱運行(只刪除這兩個[3])。

3

無論您的數據框的來源是什麼,看起來t.Price列都被引號包圍。這些反過來被\作爲\轉義,否則「」將會是0長度字符串的末尾。

解決此問題的方法由註釋建議,您可以通過列索引訪問此方法或者通過重命名列,可以將其分配給的名字來完成。

names(results) <- c("name1", "name2", "name3")