for 루프의 데이터 프레임에 변수를 추가하는 방법은 무엇입니까?for 루프의 데이터 프레임에 열 추가
나는 각 열에 매우 비효율적 2009
regions = c('A','APAC','CEE','LATAM','ME', 'NA', 'WE')
# Loop through all regions, and add them as a column in my dataframe.
for (region in regions) {
# create the query string
query_string = sprintf("SELECT date, revenue
FROM country_revenue
WHERE region = '%s'
AND date>='2009-01-01'
AND date<='2011-12-31'
ORDER BY date ASC
LIMIT 2000", region)
# Query the database, and assign the result to a variable.
assign(sprintf('rev.%s',region), mysql_query(query_string))
# I only want the 2nd column returned from my query above.
# THIS IS THE PART THAT FAILS. Error in sprintf("rev.%s", region)[, 2] : incorrect number of dimensions
sprintf('rev.%s',region) = sprintf('rev.%s',region)[,2]
# Add this variable to my data frame.
revenue = cbind(revenue, sprintf('rev.%s',region))
}
나는 무엇이 효과가 없다는 사실은 객체의 이름이 아닌 'cbind'에 문자열을 전달한다는 것입니다. (비록 그것이 작동하더라도, '할당'을 사용하고 한 번에 하나씩 열을 추가하여 데이터 프레임을 늘리는 것은 일반적으로 현명하지 않습니다.) – joran
감사합니다. Joran - 데이터 프레임을 만드는 최선의 방법이 확실하지 않습니다. for-loop를 사용한다. 제안이 있으시면 알려주십시오 :) –
가장 좋은 방법은 루프를 사용하지 않는 것입니다! 모든 지역을 사용하고 R에서 필터를 훨씬 쉽게 사용하여 쿼리를 수행 할 수 있어야합니다. 그런 다음 '길다'에서 '와이드'형식으로 이동하는 'dcast'와 같은 것이 ... 각 쿼리를 개별적으로 수행해야하는 충분한 이유가 있습니까? – Justin