我是很新,R和這個問題可能聽起來不可思議。我有在第一列其他data.frames的名稱的data.frame:如何在data.frame的名稱保存在data.frame中時訪問data.frame的數據?
> data
tablename avg_size
1 ttest 5000
2 testsheet 15000
5 ttest2 15000
6 mtcars 13000
然後我希望做的是什麼獲取表(它們是data.frames)的名稱並在這些data.frames上運行一些函數。比如我想獲得的NAS總和每個表中這是可能的使用
missing_values <- sum(is.na(eval(as.name(as.vector(data[1])))))
我的問題是, 1)這看起來有點太複雜了,我覺得有可能是更好的解決方案? 2)有了其他功能,我遇到了麻煩,例如
infinite_values <- sum(is.infinite(as.numeric(eval(as.name(as.vector(data[1]))))))
這不起作用,插入「as.numeric」沒有幫助。
有人可以幫忙嗎?編輯: 感謝您的答案,迄今爲止!我都嘗試
infinite_values <- sum(is.infinite(as.numeric(eval(as.name(as.vector(data[1]))))))
和
obg <- mget(as.character(data[,1]))
但它返回 「錯誤:未找到值''ttest''」 由於此解決方案似乎適用於您,我可能做錯了什麼?總結邏輯值的時候,雖然使用不公開或者as.vector可以幫助
lapply(mget(as.character(data[,1])), function(x) sum(is.na(x)))
你不應該需要as.numeric:
lapply(mget(as.character(data[,1])), function(x) sum(is.infinite(unlist(x))))
我把作爲
我想我至少檢測到一個問題,「mtcars」處於不同的環境中,因此無法通過mget找到。現在和unlist()似乎工作。謝謝! – mariego