2010-02-13 11 views
5

Wie kann ich in R die ersten Werte eines langen Vektors mit Werten überschreiben, die aus einer Datei stammen, in der die Datei möglicherweise weniger Werte enthält?In R, wie setze ich die ersten Werte eines langen Vektors auf die Werte eines kürzeren?

Beispiel:

# fill with n=100 values 
vec1 <- runif(100) 

# read m values, where m <= n 
vec2 <- scan("myfile", sep="\n") 

# now want to set the first m values of vec1 
# to the values in vec2 

ich durch vec2 und kopieren Sie die Werte in vec1 gehen konnte, aber ich denke, es sollte ein effizienter Weg sein?

Antwort

6
R> set.seed(1) 
R> vec1 <- runif(100) 
R> vec2 <- 1:20 

R> vec1[1:length(vec2)] <- vec2 
R> vec1 
    [1] 1.00000 2.00000 3.00000 4.00000 5.00000 6.00000 7.00000 8.00000 
    [9] 9.00000 10.00000 11.00000 12.00000 13.00000 14.00000 15.00000 16.00000 
[17] 17.00000 18.00000 19.00000 20.00000 0.93471 0.21214 0.65167 0.12556 
[25] 0.26722 0.38611 0.01339 0.38239 0.86969 0.34035 0.48208 0.59957 
[33] 0.49354 0.18622 0.82737 0.66847 0.79424 0.10794 0.72371 0.41127 
[41] 0.82095 0.64706 0.78293 0.55304 0.52972 0.78936 0.02333 0.47723 
[49] 0.73231 0.69273 0.47762 0.86121 0.43810 0.24480 0.07068 0.09947 
[57] 0.31627 0.51863 0.66201 0.40683 0.91288 0.29360 0.45907 0.33239 
[65] 0.65087 0.25802 0.47855 0.76631 0.08425 0.87532 0.33907 0.83944 
[73] 0.34668 0.33377 0.47635 0.89220 0.86434 0.38999 0.77732 0.96062 
[81] 0.43466 0.71251 0.39999 0.32535 0.75709 0.20269 0.71112 0.12169 
[89] 0.24549 0.14330 0.23963 0.05893 0.64229 0.87627 0.77891 0.79731 
[97] 0.45527 0.41008 0.81087 0.60493 
Verwandte Themen