2015-01-19 3 views
1

에 일부 기능을 적용 3.1.1나는 R과 맥 OS 10.10 오전 여러 개체

가정하자 나는 다음과 같은 데이터가 동일한 속성을 가진 ab 프레임이 있습니다

a<- structure(list(X1 = 1:5, X2 = 6:10), .Names = c("X1", "X2"), row.names = c(NA, 
-5L), class = "data.frame") 
b<- structure(list(X1 = 11:15, X2 = 16:20), .Names = c("X1", "X2" 
), row.names = c(NA, -5L), class = "data.frame") 

내가 필요한 가정 ab의 일부 기능 (예 : 열 삭제 및 첫 번째 열 곱하기)을 적용하여 원본 데이터 프레임이 다음과 같은 원하는 출력을 갖는 변경 사항을 반영하도록하십시오 :

> a 
    X1 
1 2 
2 4 
3 6 
4 8 
5 10 

> b 
    X1 
1 22 
2 24 
3 26 
4 28 
5 30 

방금 ​​for 루프를 배웠고 함수를 적용했지만 데이터 프레임에 적용 할 때 혼란 스럽습니다 (ab은 아니지만 훨씬 더 큽니다).

답변

2

동시에 작업하려는 여러 데이터 세트가있는 경우 일반적으로 (R 핵심 팀 구성원이 권장하는대로) 모든 데이터를 목록에 보관해야합니다. 당신의 목표를 달성하기 위해, 당신은 단순히 지구 환경에서 그들을 retreive하는 mgetls을 사용할 수 있으며 단순히, 예를 들어 2를 곱한 첫 번째 열, 함께

lapply(mget(ls(pattern = "[a-z]")), function(x) x <- x[1] * 2) 
# $a 
# X1 
# 1 2 
# 2 4 
# 3 6 
# 4 8 
# 5 10 
# 
# $b 
# X1 
# 1 22 
# 2 24 
# 3 26 
# 4 28 
# 5 30 
+0

또 다른 옵션입니다'지도 ('*'교체 lapply (mget (ls (pattern = "[az]")),'[', 1), 2)' – akrun

+0

안녕하세요! 귀하의 회신에 @ David Arenburg에게 감사합니다, 그것은 나에게도 유용했습니다. 문제는 내 콘솔 출력에 내가 원하는 결과를 얻지 만 환경에 저장되지 않는다는 것입니다 : lapply (mget (ls (pattern = "items_symptoms")), function (x) '이름 (')을 입력하면 이름 (x, y) items_symptoms1)'변경 사항이 보이지 않으며 콘솔에만 표시됩니다 .' mget (ls)에 포함 된 객체를 실제로 편집하는 방법 ' –

+0

@GinaZetkin 그러면 필요한 데이터 프레임 목록이 생성됩니다 예를 들어'res <- lapply (mget ...')와 같이 어딘가에 저장하면 전역 환경의 데이터 세트 대신 res를 사용하게 될 것입니다. 여기에있는 아이디어는 많은 데이터 세트로 환경을 오염시키지 않을 것이라는 것입니다 그들 모두를 하나의 목록에 보관하십시오. –