중첩 목록의 숫자 열에 만 함수를 적용하고 R의 중첩 목록 반환

심슨

내 중첩 목록의 숫자 열에 만 scale 함수를 적용하고 동일한 구조를 사용하지만 크기가 조정 된 값이 대체 된 중첩 된 목록을 반환하고 싶습니다.

다음은 내 예에 대한 더미 목록입니다.

#Create dataframes ABC and DEF, where 'left' and 'right' columns are numeric and the 'up' column contains characters
ABC <- cbind.data.frame(left = c(2, 3, 5), right = c(5, 8, 4) , up = c("ac","bb", "cc"))
ABC$up <- as.character(ABC$up)
DEF <-  cbind.data.frame(left = c(7, 2, 9), right = c(3, 6, 1) , up = c("aa","bb", "cc"))
DEF$up <- as.character(DEF$up)

#Create a list called mylist, containing two dataframes: ABC and DEF
mylist <- list(ABC = ABC, DEF = DEF)
$ABC
#  left  right  up 
#1  2     5     aa  
#2  3     8     bb
#3  5     4     cc  

$DEF
#  left  right  up 
#1  7     3     aa  
#2  2     6     bb
#3  9     1     cc

scale 함수가 각 열을 평균으로 빼고 각 열을 표준 편차로 나누면 scale (x, center = TRUE, scale = TRUE) :

perfect.scaled.mylist
$ABC
#   left    right    up 
#1  -0.87   -0.32    aa  
#2  -0.22    1.12    bb
#3   1.09   -0.80    cc

$DEF
#   left    right    up 
#1   0.28   -0.13    aa  
#2  -1.11    1.05    bb
#3   0.83   -0.93    cc

나는 이것을 시도했다 :

scaled.mylist <- lapply(lapply(mylist, `[`, -c(3)), function(x) scale(x))
$ABC
#   left    right     
#1  -0.87   -0.32      
#2  -0.22    1.12    
#3   1.09   -0.80    

$DEF
#   left    right    
#1   0.28   -0.13     
#2  -1.11    1.05   
#3   0.83   -0.93   

'왼쪽'과 '오른쪽'열의 크기를 올바르게 조정하지만 '위쪽'열을 완전히 제거합니다. 그래서 저는이 부분이 scale 함수를 올바르게 사용한다고 생각하고 있습니다. 그래서 다른 lapply 안에 중첩하여이 콘텐츠를 전체 목록으로 보낼 수 있습니다.

그래서 나는 이것을 시도했다.

scaled.nested.mylist <- lapply(mylist, function(x) lapply(lapply(x, '[', c("left", "right")), scale))

이 오류를 반환합니다 Error in colMeans(x, na.rm = TRUE) : 'x' must be numeric. 그래서 그것은 효과가 없었고 그것이 나의 최선의 희망이며 왜 그것이 실패했는지 모르겠습니다.

마지막으로, 내 코드의 구조가 정확하다고 생각하는 다른 함수 max (각 열의 최대 값을 얻기 위해)를 시도했지만 scale 함수에서 실패했습니다.

max.mylist <- lapply(mylist, function(x) lapply(lapply(x, '[', c("left", "right")), max))
$ABC
#   left  right   up 
#1  NA      NA    NA  

$DEF
#   left  right   up 
#1  NA      NA    NA 

세 열을 모두 성공적으로 반환하지만 비어 있습니다.

SO에서 비슷한 예를 보았지만 그중 어느 것도 원래 중첩 목록을 반환하지 않고 대신 변환 된 열만있는 새 목록을 반환합니다. 다운 스트림 함수가이 구조에 의존하기 때문에 원래 목록 구조를 유지해야합니다. 나는 R을 처음 접했고,리스트 랜드에서 길을 잃고 있다는 것을 인정하지만, 어떤 조언이라도 고맙게 생각합니다.

앨런 카메론

다음과 같이 할 수 있습니다.

lapply(mylist, function(x) {
  as.data.frame(lapply(x, function(y) if(is.numeric(y)) scale(y) else y),
                stringsAsFactors = FALSE)})
#> $ABC
#>         left      right up
#> 1 -0.8728716 -0.3202563 ac
#> 2 -0.2182179  1.1208971 bb
#> 3  1.0910895 -0.8006408 cc
#> 
#> $DEF
#>         left      right up
#> 1  0.2773501 -0.1324532 aa
#> 2 -1.1094004  1.0596259 bb
#> 3  0.8320503 -0.9271726 cc

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

중첩 된 목록의 요소를 반환하는 함수

분류에서Dev

R의 중첩 목록에 rbindlists 사용

분류에서Dev

이 목록의 변수로 중첩 목록에 다른 함수를 적용하는 방법이 있습니까?

분류에서Dev

이 목록의 변수로 중첩 목록에 다른 함수를 적용하는 방법이 있습니까?

분류에서Dev

중첩 된 for 루프를 사용하여 목록의 전체 문자열을 반복 할 수 있습니까?

분류에서Dev

중첩 된 목록의 열 수단

분류에서Dev

파이썬의 중첩 된 목록 안에 중첩 된 목록 만들기

분류에서Dev

함수가있는 pandas df 열 내의 하위 목록에 중첩 된 for 루프를 사용한 목록 이해

분류에서Dev

중첩 목록의 특정 항목에 숫자를 추가하려면 어떻게합니까?

분류에서Dev

R의 문자열에 목록을 중첩 해제하는 일반적인 방법

분류에서Dev

다른 목록 (중첩 된 목록)의 목록 요소에서 시작하는 새 목록 만들기

분류에서Dev

MS Word VBA를 사용하여 Word 문서의 중첩 목록을 HTML 중첩 목록으로 변환

분류에서Dev

r의 중첩 된 데이터 프레임 목록에 함수 적용

분류에서Dev

R "[["를 사용하여 중첩 된 목록 요소에 함수 적용

분류에서Dev

루프의 기존 목록에 문자열 목록 (중첩 목록) 추가

분류에서Dev

중첩 된 목록의 요소를 교체하는 함수를 만들고 그 과정에서 목록을 업데이트합니다.

분류에서Dev

이진 트리에서 중첩 된 목록의 목록 변환

분류에서Dev

하나의 플롯의 중첩 된 목록에서 다중 상자 그림 만들기

분류에서Dev

중첩 된 목록에서 숫자 열의 그룹 내 공분산 행렬 만 계산

분류에서Dev

다른 목록에 중첩 된 목록 내의 목록에서 항목을 추출하지만 함께 유지하는 방법

분류에서Dev

중첩 된 if else 조건을 기반으로 새 열을 만들고 R의 목록에서 값을 비교하는 효율적인 방법

분류에서Dev

중첩 된 목록에서 특정 요소를 포함하는 목록의 수를 계산합니다.

분류에서Dev

Redux : 중첩 목록에서 하나의 항목 만 업데이트

분류에서Dev

R의 중첩 목록에서 sfc-column 만들기

분류에서Dev

목록의 중첩 목록에서 일치하는 값 찾기

분류에서Dev

arangodb의 중첩 목록 (하위 목록)에 데이터 추가

분류에서Dev

R의 중첩 목록에 변수를 추가하는 우아한 방법

분류에서Dev

빈 목록의 중첩 목록을 감지 할 때 True를 반환하는 방법은 무엇입니까?

분류에서Dev

중첩 된 목록에 함수를 연속적으로 적용하고 함수를 적용 할 때마다 목록이 한 번 더 중첩됩니다.

Related 관련 기사

  1. 1

    중첩 된 목록의 요소를 반환하는 함수

  2. 2

    R의 중첩 목록에 rbindlists 사용

  3. 3

    이 목록의 변수로 중첩 목록에 다른 함수를 적용하는 방법이 있습니까?

  4. 4

    이 목록의 변수로 중첩 목록에 다른 함수를 적용하는 방법이 있습니까?

  5. 5

    중첩 된 for 루프를 사용하여 목록의 전체 문자열을 반복 할 수 있습니까?

  6. 6

    중첩 된 목록의 열 수단

  7. 7

    파이썬의 중첩 된 목록 안에 중첩 된 목록 만들기

  8. 8

    함수가있는 pandas df 열 내의 하위 목록에 중첩 된 for 루프를 사용한 목록 이해

  9. 9

    중첩 목록의 특정 항목에 숫자를 추가하려면 어떻게합니까?

  10. 10

    R의 문자열에 목록을 중첩 해제하는 일반적인 방법

  11. 11

    다른 목록 (중첩 된 목록)의 목록 요소에서 시작하는 새 목록 만들기

  12. 12

    MS Word VBA를 사용하여 Word 문서의 중첩 목록을 HTML 중첩 목록으로 변환

  13. 13

    r의 중첩 된 데이터 프레임 목록에 함수 적용

  14. 14

    R "[["를 사용하여 중첩 된 목록 요소에 함수 적용

  15. 15

    루프의 기존 목록에 문자열 목록 (중첩 목록) 추가

  16. 16

    중첩 된 목록의 요소를 교체하는 함수를 만들고 그 과정에서 목록을 업데이트합니다.

  17. 17

    이진 트리에서 중첩 된 목록의 목록 변환

  18. 18

    하나의 플롯의 중첩 된 목록에서 다중 상자 그림 만들기

  19. 19

    중첩 된 목록에서 숫자 열의 그룹 내 공분산 행렬 만 계산

  20. 20

    다른 목록에 중첩 된 목록 내의 목록에서 항목을 추출하지만 함께 유지하는 방법

  21. 21

    중첩 된 if else 조건을 기반으로 새 열을 만들고 R의 목록에서 값을 비교하는 효율적인 방법

  22. 22

    중첩 된 목록에서 특정 요소를 포함하는 목록의 수를 계산합니다.

  23. 23

    Redux : 중첩 목록에서 하나의 항목 만 업데이트

  24. 24

    R의 중첩 목록에서 sfc-column 만들기

  25. 25

    목록의 중첩 목록에서 일치하는 값 찾기

  26. 26

    arangodb의 중첩 목록 (하위 목록)에 데이터 추가

  27. 27

    R의 중첩 목록에 변수를 추가하는 우아한 방법

  28. 28

    빈 목록의 중첩 목록을 감지 할 때 True를 반환하는 방법은 무엇입니까?

  29. 29

    중첩 된 목록에 함수를 연속적으로 적용하고 함수를 적용 할 때마다 목록이 한 번 더 중첩됩니다.

뜨겁다태그

보관