假設我有幾個數據,並且我想分別對它們進行子集化。找不到對象使用r進行子集化時發生錯誤
n = c(1, 1, 1)
s = c(55, 56, 57)
q = c(99, 100, 101)
df_1 = data.frame(n, s, q)
df_2 = data.frame(n, s, q)
df_3 = data.frame(n, s, q) # assume they are the same.
n s q
1 1 55 99
2 1 56 100
3 1 57 101
然後,我創建一個循環來調用該文件,
for (h in 1:3){ # for loop the file
for (i in 1:1){ # i is for different values in column 'n'
Result <- paste('ResultFile_',h,sep="")
input <- paste('df_',h,sep="")
Result <- subset(input,subset=n==i)[,c(2,3)]
DO SOMETHING HERE....
}
}
我想到的是,當列「N」等於1時,我會列S和Q這將產生3個結果文件對我來說。
但它帶有錯誤信息。
Error in subset.default(input, subset = n == i) : object 'n' not found
當我直接替換「輸入」在這一行subset(input,subset=n==i)[,c(2,3)]
「DF1」,那麼它可以工作。
爲什麼?
在你的例子中'輸入'是你用'paste()'(用class(input)'驗證)所做的一個字符串。 'subset'需要你傳入一個data.frame。如果你有一堆名爲'df_1','df_2','df_3'的變量,這通常表明你在R中「出錯了」。你的data.frames應該放在一個列表中,以使它更容易。看到這個問題更好的解決方案:http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames – MrFlick