4
$\begingroup$

I have a Table of values e.g.

{{x,y,z},{x,y,z},{x,y,z}…}

How do I replace the the "z" column with a List of values?

$\endgroup$
2
$\begingroup$
fun[u_, c_, r_] := Transpose@ReplacePart[Transpose[u], c -> r]

Example:

list = {{a, b, c}, {a, b, c}, {a, b, c}};
fun[list, 1, Range[3]]

yields:

{{1, b, c}, {2, b, c}, {3, b, c}}

This requires the replacement column be the same length (which I have assumed as intention) as final transpose will fail if this is not the case.

$\endgroup$
2
$\begingroup$

If you mean each column in each respective sublist with the respective value from the value list, the first, if you mean replacing all with a literal list, the second.

test = {{a, b, c}, {d, e, f}, {g, h, i}}
test[[All, 3]] = {1, 2, 3};
test
test[[All, 3]] = Sequence[{1, 2, 3}];
test

(*
{{a, b, 1}, {d, e, 2}, {g, h, 3}}

{a, b, {1, 2, 3}}, {d, e, {1, 2, 3}}, {g, h, {1, 2, 3}}

*)
$\endgroup$
  • $\begingroup$ Thanks, I meant the first. However my List of values is really long, so in your example: List1={1,2,3,…..n}. However test[[All, 3]] = List1 doesn't seem to work? $\endgroup$ – Ren Feb 14 '14 at 0:59
  • $\begingroup$ @ren: When doing the first type of replacement, the target list must have as many sublists as the replacement values list, i.e., if you have ten sublists of three values each, and you want to replace the last in each, the replacement list must be ten values. If it isn't, the behavior will mimic the second. Perhaps you could update your question with more concrete examples? $\endgroup$ – ciao Feb 14 '14 at 1:03
  • $\begingroup$ That sorted it, thanks! $\endgroup$ – Ren Feb 14 '14 at 1:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.