2017-09-27 1 views
0

간단한 질문은 여기에 있지만 올바른 대답을 찾는데 문제가 있습니다.R : 데이터 프레임에 직접 "값"을 출력하십시오.

pracma 패키지의 trapz을 사용하여 곡선의 아래 영역에 대한 값을 가져옵니다. 난 단지 7 조건을 가지고 있기 때문에

AUC1 = trapz(df$x, df$y) 
AUC2 = trapz(df$x, df$z) 
... 

것은, 나는 다음과 같은 특성을 가진 7 개 저장된 값의 결과로, 수동으로하고 있어요 :

class(AUC1) = "numeric" 
typeof(AUC1) = "double" 

을하는 방법을 수 dataframe보다는에 내가 직접 출력 내 결과 값 목록? 이 결과를 얻고 싶습니다 :

1 AUC1 VALUE1 
2 AUC2 VALUE2 
    ...  ... 
7 AUC7 VALUE7 

그러나 이제는 새로운 데이터 프레임을 만들고 각 값을 수동으로 입력해야합니다.

후속 질문으로 trapz을 여러 값 (동시에 입력)으로 실행하는 가장 좋은 방법은 무엇입니까? 루프를 만들고 싶습니까? 감사! 대신 각 data.frame 수동 trapz을 실행

+3

모든에 목록에 넣어 trapz을 실행하는 데 lapply를 사용할 수 있습니까? 또한 시도하십시오'data.frame (Values ​​= do.call (rbind, mget (ls (pattern = "AUC \\ d +")))))' –

+1

패키지는 실습입니다. 솔루션이 효과적이었습니다. 감사! – moxed

+2

데이터가 올바르게 정렬되고'pracma :: trapz'을 사용하여 누락 된 값이 없는지 확인하십시오. 그렇지 않으면 잘못된 결과가 발생할 수 있습니다 (이 문제가 해결되지 않은 경우). 'sfsmisc :: integrate.xy'를 사용했는데 데이터의 순서 나 누락을 피하는 것으로 보이며 "스플라인"옵션이 있습니다. –

답변

3

,`trapz`을 무슨 패키지 번

#DATA 
set.seed(2) 
df1 = data.frame(x = rnorm(10), y = rnorm(10)) 
df2 = data.frame(x = rnorm(10), y = rnorm(10)) 

#Create a list 
mylist = mget(c("df1", "df2")) 

#Run trapz on all dataframes in mylist 
library(pracma) 
data.frame(Values = do.call(rbind, lapply(mylist, function(a) trapz(a$x, a$y)))) 
#  Values 
#df1 2.2370598 
#df2 0.2684159 
+1

훌륭한 작품입니다. 감사! – moxed

관련 문제