2017-05-18 3 views
-1

저는 R으로 30 분 전에 작업을 시작했고 SQL Server에서 R 스크립트를 실행하기 시작 했으므로 완전한 멍청하다고 말합니다 .길이가 다른 두 개의 벡터를 데이터 프레임에 병합

데이터 프레임에 두 개의 R 벡터를 병합하려고하지만 내 문제는 벡터의 길이가 다양하다는 것입니다.

나는 이것을 할 수 있는지 확실하지 않지만 반드시 볼 필요는 없지만?

내 R 스크립트입니다 :

n <- c(2, 3, 5, 6); 
s = c("aa", "bb", "cc"); 
df = data.frame(n, s); 

내가지고있어 오류는 다음과 같습니다 data.frame의

오류 (N, S) : 행의 인수가 서로 다른 의미 수 : 4, 3 호출 : 소스 -> withVisible -> eval -> eval -> data.frame

ScaleR의 오류. 자세한 내용은 출력을 확인하십시오. 의 오류 eval (expr, envir, enclos) : ScaleR의 오류입니다. 자세한 내용은 의 출력을 확인하십시오. 전화 : 소스 -> withVisible -> 평가는 -> 평가 -> .Call 실행은 내가하는 일이 LEFT JOIN과 비슷한 결과 집합을 생성하는 상상 해요 Esentially 무엇

을 중단.

2 aa 
3 bb 
5 cc 
6 NULL 

R 데이터 프레임에서 "대체 NULL"값을 지정해야하는지 스스로 묻습니다. 그러나 이것이 해결책인지 확실하지 않습니다. 어쩌면

+1

당신이 NULL''이 아니라'NA' (누락) 할 수 없습니다 (N = N, S의 = s의)'L = 목록; data.frame (lapply (L, \'길이 <- \', 최대 길이 (L))))'. 나는 이것을위한 약간의 속임수가있는 것을 추측한다. – Frank

+0

당신이 추천하는 것은'합병 '이 아닙니다. 병합하려면 키가 필요합니다. R의 data.frame에 다른 길이의'list '를 결합하는 것은 불가능합니다. 결합 할 때 길이를 같게해야합니다. 어떻게 그들을 결합하고 싶습니까? – DJJ

+0

@DJJ R 데이터 프레임에 각 행에 대해 암시 적 키가 생성되어 있는지 확인하기 위해 온라인에서 검색 중이므로 'JOIN'또는 매핑 할 수 있지만 아직 아무것도 찾을 수 없습니다. –

답변

1

이 하나

sq <- seq(max(length(n), length(s))) 
data.frame(n[sq], s[sq]) 

# n.sq. s.sq. 
#1  2 aa 
#2  3 bb 
#3  5 cc 
#4  6 <NA> 
+1

나는 이것을 좋아한다! 고마워요! –

관련 문제