Rには新しく、おそらくnoobに関する質問があります。ループのための特定には、次のコードを考えてみましょう:Rデータフレームへのアクセス:ここでは何が起こっていますか?
library(lubridate)
#Read in all site files in the directory
sitefiles <- list.files(pattern = "\\.csv$") #Get a list of all csv's in dir
sites <- list() #Create an empty list.
sites <- lapply(sitefiles, read.csv)
names(sites) <- gsub("\\.csv$", "", sitefiles) #Rename the list
for (site in names(sites)){
site$time <- dmy_hms(site$timestamp)
#Error: $ operator is invalid for atomic vectors
}
OK、のではなく、これを試してみましょう:
for (site in sites){
site$time <- mdy_hms(site$timestamp)
}
リストsites
内のデータフレームに何もしないように表示されます。特に、コマンドcolnames(sites[[1]])
はforループを実行する前後で同じです。列が追加されていません。
しかし、変更がありました。 Rstudioには、新しい変数があることがわかります。site
という名前のデータフレームがあります。これには列時間が追加されています。なんで?
ここでは何が起こっていますか?このコマンドを正常に実行するにはどうすればよいですか?
'site'はまだオブジェクトではありません。さらに、 'sites'はリストです。したがって、ループの代わりに 'lapply'する必要があります。 – loki
恋人はどのように見えますか?また、いくつかのドキュメントがありますか?私はループとラップが交換できると思った。 – Dirk
あなたの 'for'ループに' site $ time < - dmy_hms(site $ timestamp) 'の代わりに' sites [[site]] $ time < - dmy_hms(site $ timestamp) 'を使います。 [この投稿](https://stackoverflow.com/questions/36777567/is-there-a-logical-way-to-think-about-list-indexing/36815401#36815401)をチェックしてください。より長い議論。また、ヘルプファイル '?" ["'は2〜3回読む価値があります。 – lmo