Sampling without replacement from multiple vectors of different length using vector lengths as some sort of weight










0















I want to take random samples from multiple vectors of different length using vector lengths as some sort of weight, such that more samples are drawn from vectors of larger sizes when compared to smaller ones (proportional sampling of sorts).



To illustrate my point please consider this:



# Generating 100 different individuals
vec1 <- rep( letters , length.out = 100 )
vec2 <- c(1:100)

# Join two above vectors
students <- paste( vec1 , vec2 , sep="" )


The above produces a giant vector of 100 students. Now I am trying to generate 10 random vectors from which the final sampling has to take place.



# Creating 10 vectors of different sizes
a <- split( students , sample(10, 100 , repl = TRUE) )
vec1 <- a$`1`
vec2 <- a$`2`
vec3 <- a$`3`
vec4 <- a$`4`
vec5 <- a$`5`
vec6 <- a$`6`
vec7 <- a$`7`
vec8 <- a$`8`
vec9 <- a$`9`
vec10 <- a$`10`


So, now I have 10 vectors (vec1...vec10) of varying sizes. My goal is to get a final vector with a total of 50 random samples from all the vectors, such that when sampling is done it would be wrt vector length i.e., proportional sampling.



Is something like this possible?



Apologies if this has been asked before!










share|improve this question


























    0















    I want to take random samples from multiple vectors of different length using vector lengths as some sort of weight, such that more samples are drawn from vectors of larger sizes when compared to smaller ones (proportional sampling of sorts).



    To illustrate my point please consider this:



    # Generating 100 different individuals
    vec1 <- rep( letters , length.out = 100 )
    vec2 <- c(1:100)

    # Join two above vectors
    students <- paste( vec1 , vec2 , sep="" )


    The above produces a giant vector of 100 students. Now I am trying to generate 10 random vectors from which the final sampling has to take place.



    # Creating 10 vectors of different sizes
    a <- split( students , sample(10, 100 , repl = TRUE) )
    vec1 <- a$`1`
    vec2 <- a$`2`
    vec3 <- a$`3`
    vec4 <- a$`4`
    vec5 <- a$`5`
    vec6 <- a$`6`
    vec7 <- a$`7`
    vec8 <- a$`8`
    vec9 <- a$`9`
    vec10 <- a$`10`


    So, now I have 10 vectors (vec1...vec10) of varying sizes. My goal is to get a final vector with a total of 50 random samples from all the vectors, such that when sampling is done it would be wrt vector length i.e., proportional sampling.



    Is something like this possible?



    Apologies if this has been asked before!










    share|improve this question
























      0












      0








      0








      I want to take random samples from multiple vectors of different length using vector lengths as some sort of weight, such that more samples are drawn from vectors of larger sizes when compared to smaller ones (proportional sampling of sorts).



      To illustrate my point please consider this:



      # Generating 100 different individuals
      vec1 <- rep( letters , length.out = 100 )
      vec2 <- c(1:100)

      # Join two above vectors
      students <- paste( vec1 , vec2 , sep="" )


      The above produces a giant vector of 100 students. Now I am trying to generate 10 random vectors from which the final sampling has to take place.



      # Creating 10 vectors of different sizes
      a <- split( students , sample(10, 100 , repl = TRUE) )
      vec1 <- a$`1`
      vec2 <- a$`2`
      vec3 <- a$`3`
      vec4 <- a$`4`
      vec5 <- a$`5`
      vec6 <- a$`6`
      vec7 <- a$`7`
      vec8 <- a$`8`
      vec9 <- a$`9`
      vec10 <- a$`10`


      So, now I have 10 vectors (vec1...vec10) of varying sizes. My goal is to get a final vector with a total of 50 random samples from all the vectors, such that when sampling is done it would be wrt vector length i.e., proportional sampling.



      Is something like this possible?



      Apologies if this has been asked before!










      share|improve this question














      I want to take random samples from multiple vectors of different length using vector lengths as some sort of weight, such that more samples are drawn from vectors of larger sizes when compared to smaller ones (proportional sampling of sorts).



      To illustrate my point please consider this:



      # Generating 100 different individuals
      vec1 <- rep( letters , length.out = 100 )
      vec2 <- c(1:100)

      # Join two above vectors
      students <- paste( vec1 , vec2 , sep="" )


      The above produces a giant vector of 100 students. Now I am trying to generate 10 random vectors from which the final sampling has to take place.



      # Creating 10 vectors of different sizes
      a <- split( students , sample(10, 100 , repl = TRUE) )
      vec1 <- a$`1`
      vec2 <- a$`2`
      vec3 <- a$`3`
      vec4 <- a$`4`
      vec5 <- a$`5`
      vec6 <- a$`6`
      vec7 <- a$`7`
      vec8 <- a$`8`
      vec9 <- a$`9`
      vec10 <- a$`10`


      So, now I have 10 vectors (vec1...vec10) of varying sizes. My goal is to get a final vector with a total of 50 random samples from all the vectors, such that when sampling is done it would be wrt vector length i.e., proportional sampling.



      Is something like this possible?



      Apologies if this has been asked before!







      r






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 23:15









      Shab86Shab86

      34




      34






















          1 Answer
          1






          active

          oldest

          votes


















          0














          This will get you approximately 50 students (depending on how a was split)



          new = unlist(lapply(a, function(x) sample(x, round(length(x)/2))))



          To get exactly 50 each time, you can do this



          ll = sapply(a, length) # Get length of each vector in "a"
          target = 50
          new_ll = 0
          while (sum(new_ll) != target)
          new_ll = round(ll * target / sum(ll) + runif(length(ll), -0.5, 0.5))

          new = unlist(lapply(1:length(a), function(i) sample(a[[i]], new_ll[i])))


          Explanation: Get the length of each vector in a and assign to ll. This amounts to doing ll[1] = length(vec1); ll[2] = length(vec2) and so on. We need to sample a certain amount from each vector in a such that we get 50 elements (target). This amount is determined with new_ll. It is approximately equal to target / num_students times each vector length.



          Since this does not guarantee that target students are selected each time, we add a little jitter with runif to move the numbers around slightly, and we continue looping until the the sum of new_ll is equal to target.



          The final line then iterates i from 1 through 10 (or the number of vectors in a) and samples new_ll[i] from each vector a[[i]].






          share|improve this answer

























          • Thanks for your reply! But here, the sampling is done from a as a whole or does it go list by list within a, in form of x? Also, why have you chosen length(x)/2?

            – Shab86
            Nov 14 '18 at 23:43











          • lapply and sapply perform functions over a list (the list being a), so there is no need to split it into ten objects before hand. The x is the argument to the custom function used within lapply and would equal each vector from a. I use length(x)/2 since 50 is half of 100, so about half of each vector should be randomly selected.

            – mickey
            Nov 14 '18 at 23:46











          • Awesome reply Mickey! Thanks a ton for your detailed explanations as well. Is the runif there to add bit off as you say, jitter in selecting a random length (50% or less) from each vector in a? So that when running the lapply, for each vector we would sample elements from each vector in a, of length new_ll.

            – Shab86
            Nov 15 '18 at 0:06











          • Also, one query! This answer of yours especially adding the jitter, was highly inspired one. How did you think about this one? I am learning R now via datacamp & simultaneously using for data analysis @ work. So, I was wondering how does one develop such lateral thinking especially when it comes to R prog?

            – Shab86
            Nov 15 '18 at 0:10











          • To your question about the jitter: yes, it's meant to deal with odd-lengthed vectors in a (e.g. should you choose 4 or 5 elements from a 9-length vector if you want half of them?). Coming up with the runif was a bit lucky on my part (and it isn't the only way to do things), I just wanted to tweak the sample lengths a bit until it was guaranteed 50 would be chosen. As for lateral thinking, I think you give me too much credit, but you can pick up the quirks and develop your own style by playing around a lot in R and just trying all sorts of random approaches.

            – mickey
            Nov 15 '18 at 0:19










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













          draft saved

          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53310183%2fsampling-without-replacement-from-multiple-vectors-of-different-length-using-vec%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          0














          This will get you approximately 50 students (depending on how a was split)



          new = unlist(lapply(a, function(x) sample(x, round(length(x)/2))))



          To get exactly 50 each time, you can do this



          ll = sapply(a, length) # Get length of each vector in "a"
          target = 50
          new_ll = 0
          while (sum(new_ll) != target)
          new_ll = round(ll * target / sum(ll) + runif(length(ll), -0.5, 0.5))

          new = unlist(lapply(1:length(a), function(i) sample(a[[i]], new_ll[i])))


          Explanation: Get the length of each vector in a and assign to ll. This amounts to doing ll[1] = length(vec1); ll[2] = length(vec2) and so on. We need to sample a certain amount from each vector in a such that we get 50 elements (target). This amount is determined with new_ll. It is approximately equal to target / num_students times each vector length.



          Since this does not guarantee that target students are selected each time, we add a little jitter with runif to move the numbers around slightly, and we continue looping until the the sum of new_ll is equal to target.



          The final line then iterates i from 1 through 10 (or the number of vectors in a) and samples new_ll[i] from each vector a[[i]].






          share|improve this answer

























          • Thanks for your reply! But here, the sampling is done from a as a whole or does it go list by list within a, in form of x? Also, why have you chosen length(x)/2?

            – Shab86
            Nov 14 '18 at 23:43











          • lapply and sapply perform functions over a list (the list being a), so there is no need to split it into ten objects before hand. The x is the argument to the custom function used within lapply and would equal each vector from a. I use length(x)/2 since 50 is half of 100, so about half of each vector should be randomly selected.

            – mickey
            Nov 14 '18 at 23:46











          • Awesome reply Mickey! Thanks a ton for your detailed explanations as well. Is the runif there to add bit off as you say, jitter in selecting a random length (50% or less) from each vector in a? So that when running the lapply, for each vector we would sample elements from each vector in a, of length new_ll.

            – Shab86
            Nov 15 '18 at 0:06











          • Also, one query! This answer of yours especially adding the jitter, was highly inspired one. How did you think about this one? I am learning R now via datacamp & simultaneously using for data analysis @ work. So, I was wondering how does one develop such lateral thinking especially when it comes to R prog?

            – Shab86
            Nov 15 '18 at 0:10











          • To your question about the jitter: yes, it's meant to deal with odd-lengthed vectors in a (e.g. should you choose 4 or 5 elements from a 9-length vector if you want half of them?). Coming up with the runif was a bit lucky on my part (and it isn't the only way to do things), I just wanted to tweak the sample lengths a bit until it was guaranteed 50 would be chosen. As for lateral thinking, I think you give me too much credit, but you can pick up the quirks and develop your own style by playing around a lot in R and just trying all sorts of random approaches.

            – mickey
            Nov 15 '18 at 0:19















          0














          This will get you approximately 50 students (depending on how a was split)



          new = unlist(lapply(a, function(x) sample(x, round(length(x)/2))))



          To get exactly 50 each time, you can do this



          ll = sapply(a, length) # Get length of each vector in "a"
          target = 50
          new_ll = 0
          while (sum(new_ll) != target)
          new_ll = round(ll * target / sum(ll) + runif(length(ll), -0.5, 0.5))

          new = unlist(lapply(1:length(a), function(i) sample(a[[i]], new_ll[i])))


          Explanation: Get the length of each vector in a and assign to ll. This amounts to doing ll[1] = length(vec1); ll[2] = length(vec2) and so on. We need to sample a certain amount from each vector in a such that we get 50 elements (target). This amount is determined with new_ll. It is approximately equal to target / num_students times each vector length.



          Since this does not guarantee that target students are selected each time, we add a little jitter with runif to move the numbers around slightly, and we continue looping until the the sum of new_ll is equal to target.



          The final line then iterates i from 1 through 10 (or the number of vectors in a) and samples new_ll[i] from each vector a[[i]].






          share|improve this answer

























          • Thanks for your reply! But here, the sampling is done from a as a whole or does it go list by list within a, in form of x? Also, why have you chosen length(x)/2?

            – Shab86
            Nov 14 '18 at 23:43











          • lapply and sapply perform functions over a list (the list being a), so there is no need to split it into ten objects before hand. The x is the argument to the custom function used within lapply and would equal each vector from a. I use length(x)/2 since 50 is half of 100, so about half of each vector should be randomly selected.

            – mickey
            Nov 14 '18 at 23:46











          • Awesome reply Mickey! Thanks a ton for your detailed explanations as well. Is the runif there to add bit off as you say, jitter in selecting a random length (50% or less) from each vector in a? So that when running the lapply, for each vector we would sample elements from each vector in a, of length new_ll.

            – Shab86
            Nov 15 '18 at 0:06











          • Also, one query! This answer of yours especially adding the jitter, was highly inspired one. How did you think about this one? I am learning R now via datacamp & simultaneously using for data analysis @ work. So, I was wondering how does one develop such lateral thinking especially when it comes to R prog?

            – Shab86
            Nov 15 '18 at 0:10











          • To your question about the jitter: yes, it's meant to deal with odd-lengthed vectors in a (e.g. should you choose 4 or 5 elements from a 9-length vector if you want half of them?). Coming up with the runif was a bit lucky on my part (and it isn't the only way to do things), I just wanted to tweak the sample lengths a bit until it was guaranteed 50 would be chosen. As for lateral thinking, I think you give me too much credit, but you can pick up the quirks and develop your own style by playing around a lot in R and just trying all sorts of random approaches.

            – mickey
            Nov 15 '18 at 0:19













          0












          0








          0







          This will get you approximately 50 students (depending on how a was split)



          new = unlist(lapply(a, function(x) sample(x, round(length(x)/2))))



          To get exactly 50 each time, you can do this



          ll = sapply(a, length) # Get length of each vector in "a"
          target = 50
          new_ll = 0
          while (sum(new_ll) != target)
          new_ll = round(ll * target / sum(ll) + runif(length(ll), -0.5, 0.5))

          new = unlist(lapply(1:length(a), function(i) sample(a[[i]], new_ll[i])))


          Explanation: Get the length of each vector in a and assign to ll. This amounts to doing ll[1] = length(vec1); ll[2] = length(vec2) and so on. We need to sample a certain amount from each vector in a such that we get 50 elements (target). This amount is determined with new_ll. It is approximately equal to target / num_students times each vector length.



          Since this does not guarantee that target students are selected each time, we add a little jitter with runif to move the numbers around slightly, and we continue looping until the the sum of new_ll is equal to target.



          The final line then iterates i from 1 through 10 (or the number of vectors in a) and samples new_ll[i] from each vector a[[i]].






          share|improve this answer















          This will get you approximately 50 students (depending on how a was split)



          new = unlist(lapply(a, function(x) sample(x, round(length(x)/2))))



          To get exactly 50 each time, you can do this



          ll = sapply(a, length) # Get length of each vector in "a"
          target = 50
          new_ll = 0
          while (sum(new_ll) != target)
          new_ll = round(ll * target / sum(ll) + runif(length(ll), -0.5, 0.5))

          new = unlist(lapply(1:length(a), function(i) sample(a[[i]], new_ll[i])))


          Explanation: Get the length of each vector in a and assign to ll. This amounts to doing ll[1] = length(vec1); ll[2] = length(vec2) and so on. We need to sample a certain amount from each vector in a such that we get 50 elements (target). This amount is determined with new_ll. It is approximately equal to target / num_students times each vector length.



          Since this does not guarantee that target students are selected each time, we add a little jitter with runif to move the numbers around slightly, and we continue looping until the the sum of new_ll is equal to target.



          The final line then iterates i from 1 through 10 (or the number of vectors in a) and samples new_ll[i] from each vector a[[i]].







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Nov 14 '18 at 23:56

























          answered Nov 14 '18 at 23:28









          mickeymickey

          1,4302418




          1,4302418












          • Thanks for your reply! But here, the sampling is done from a as a whole or does it go list by list within a, in form of x? Also, why have you chosen length(x)/2?

            – Shab86
            Nov 14 '18 at 23:43











          • lapply and sapply perform functions over a list (the list being a), so there is no need to split it into ten objects before hand. The x is the argument to the custom function used within lapply and would equal each vector from a. I use length(x)/2 since 50 is half of 100, so about half of each vector should be randomly selected.

            – mickey
            Nov 14 '18 at 23:46











          • Awesome reply Mickey! Thanks a ton for your detailed explanations as well. Is the runif there to add bit off as you say, jitter in selecting a random length (50% or less) from each vector in a? So that when running the lapply, for each vector we would sample elements from each vector in a, of length new_ll.

            – Shab86
            Nov 15 '18 at 0:06











          • Also, one query! This answer of yours especially adding the jitter, was highly inspired one. How did you think about this one? I am learning R now via datacamp & simultaneously using for data analysis @ work. So, I was wondering how does one develop such lateral thinking especially when it comes to R prog?

            – Shab86
            Nov 15 '18 at 0:10











          • To your question about the jitter: yes, it's meant to deal with odd-lengthed vectors in a (e.g. should you choose 4 or 5 elements from a 9-length vector if you want half of them?). Coming up with the runif was a bit lucky on my part (and it isn't the only way to do things), I just wanted to tweak the sample lengths a bit until it was guaranteed 50 would be chosen. As for lateral thinking, I think you give me too much credit, but you can pick up the quirks and develop your own style by playing around a lot in R and just trying all sorts of random approaches.

            – mickey
            Nov 15 '18 at 0:19

















          • Thanks for your reply! But here, the sampling is done from a as a whole or does it go list by list within a, in form of x? Also, why have you chosen length(x)/2?

            – Shab86
            Nov 14 '18 at 23:43











          • lapply and sapply perform functions over a list (the list being a), so there is no need to split it into ten objects before hand. The x is the argument to the custom function used within lapply and would equal each vector from a. I use length(x)/2 since 50 is half of 100, so about half of each vector should be randomly selected.

            – mickey
            Nov 14 '18 at 23:46











          • Awesome reply Mickey! Thanks a ton for your detailed explanations as well. Is the runif there to add bit off as you say, jitter in selecting a random length (50% or less) from each vector in a? So that when running the lapply, for each vector we would sample elements from each vector in a, of length new_ll.

            – Shab86
            Nov 15 '18 at 0:06











          • Also, one query! This answer of yours especially adding the jitter, was highly inspired one. How did you think about this one? I am learning R now via datacamp & simultaneously using for data analysis @ work. So, I was wondering how does one develop such lateral thinking especially when it comes to R prog?

            – Shab86
            Nov 15 '18 at 0:10











          • To your question about the jitter: yes, it's meant to deal with odd-lengthed vectors in a (e.g. should you choose 4 or 5 elements from a 9-length vector if you want half of them?). Coming up with the runif was a bit lucky on my part (and it isn't the only way to do things), I just wanted to tweak the sample lengths a bit until it was guaranteed 50 would be chosen. As for lateral thinking, I think you give me too much credit, but you can pick up the quirks and develop your own style by playing around a lot in R and just trying all sorts of random approaches.

            – mickey
            Nov 15 '18 at 0:19
















          Thanks for your reply! But here, the sampling is done from a as a whole or does it go list by list within a, in form of x? Also, why have you chosen length(x)/2?

          – Shab86
          Nov 14 '18 at 23:43





          Thanks for your reply! But here, the sampling is done from a as a whole or does it go list by list within a, in form of x? Also, why have you chosen length(x)/2?

          – Shab86
          Nov 14 '18 at 23:43













          lapply and sapply perform functions over a list (the list being a), so there is no need to split it into ten objects before hand. The x is the argument to the custom function used within lapply and would equal each vector from a. I use length(x)/2 since 50 is half of 100, so about half of each vector should be randomly selected.

          – mickey
          Nov 14 '18 at 23:46





          lapply and sapply perform functions over a list (the list being a), so there is no need to split it into ten objects before hand. The x is the argument to the custom function used within lapply and would equal each vector from a. I use length(x)/2 since 50 is half of 100, so about half of each vector should be randomly selected.

          – mickey
          Nov 14 '18 at 23:46













          Awesome reply Mickey! Thanks a ton for your detailed explanations as well. Is the runif there to add bit off as you say, jitter in selecting a random length (50% or less) from each vector in a? So that when running the lapply, for each vector we would sample elements from each vector in a, of length new_ll.

          – Shab86
          Nov 15 '18 at 0:06





          Awesome reply Mickey! Thanks a ton for your detailed explanations as well. Is the runif there to add bit off as you say, jitter in selecting a random length (50% or less) from each vector in a? So that when running the lapply, for each vector we would sample elements from each vector in a, of length new_ll.

          – Shab86
          Nov 15 '18 at 0:06













          Also, one query! This answer of yours especially adding the jitter, was highly inspired one. How did you think about this one? I am learning R now via datacamp & simultaneously using for data analysis @ work. So, I was wondering how does one develop such lateral thinking especially when it comes to R prog?

          – Shab86
          Nov 15 '18 at 0:10





          Also, one query! This answer of yours especially adding the jitter, was highly inspired one. How did you think about this one? I am learning R now via datacamp & simultaneously using for data analysis @ work. So, I was wondering how does one develop such lateral thinking especially when it comes to R prog?

          – Shab86
          Nov 15 '18 at 0:10













          To your question about the jitter: yes, it's meant to deal with odd-lengthed vectors in a (e.g. should you choose 4 or 5 elements from a 9-length vector if you want half of them?). Coming up with the runif was a bit lucky on my part (and it isn't the only way to do things), I just wanted to tweak the sample lengths a bit until it was guaranteed 50 would be chosen. As for lateral thinking, I think you give me too much credit, but you can pick up the quirks and develop your own style by playing around a lot in R and just trying all sorts of random approaches.

          – mickey
          Nov 15 '18 at 0:19





          To your question about the jitter: yes, it's meant to deal with odd-lengthed vectors in a (e.g. should you choose 4 or 5 elements from a 9-length vector if you want half of them?). Coming up with the runif was a bit lucky on my part (and it isn't the only way to do things), I just wanted to tweak the sample lengths a bit until it was guaranteed 50 would be chosen. As for lateral thinking, I think you give me too much credit, but you can pick up the quirks and develop your own style by playing around a lot in R and just trying all sorts of random approaches.

          – mickey
          Nov 15 '18 at 0:19



















          draft saved

          draft discarded
















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid


          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.

          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53310183%2fsampling-without-replacement-from-multiple-vectors-of-different-length-using-vec%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          這個網誌中的熱門文章

          How to read a connectionString WITH PROVIDER in .NET Core?

          Node.js Script on GitHub Pages or Amazon S3

          Museum of Modern and Contemporary Art of Trento and Rovereto